← Kursa Dön
📄 Text · 30 min

GitHub Copilot ve AI

Giriş — Çırak ile Usta Arasındaki Yardımcı

Bir marangoz atölyesinde çalıştığınızı düşünün. Yanınızda süper hafızalı, her kitabı okumuş ama deneyimi olmayan bir çırak var. Siz "burada bir çekmece lazım" dediğinizde, çırak hemen on farklı çekmece tasarımı çizer. Bazıları mükemmel, bazıları kullanışsız. Hangisini seçeceğinize siz karar verirsiniz — çünkü siz ustasınız.

GitHub Copilot tam olarak bu çıraktır. Devasa miktarda kod okumuş, pattern'leri ezberlemiş, ama "doğru kararı" vermek hâlâ sizin işiniz. Bu derste Copilot'un nasıl çalıştığını, nerede işe yaradığını, nerede dikkatli olmanız gerektiğini ve modern AI araçlarını günlük geliştirme workflow'unuza nasıl entegre edeceğinizi öğreneceğiz.

GitHub Copilot Nedir?

GitHub Copilot, OpenAI Codex modelini kullanan bir AI kod asistanıdır. Kodunuzun bağlamını (context) anlayarak satır tamamlama, fonksiyon önerme ve hatta tam blok kod yazma yeteneğine sahiptir.

Copilot Çalışma Modeli:

  Siz yazarsınız          Copilot önerir          Siz karar verirsiniz
  ┌──────────┐           ┌──────────────┐         ┌────────────────┐
  │ function  │  ────►   │ function     │  ────►  │ Tab → Kabul    │
  │ validate  │  Context │ validateEmail│         │ Esc → Reddet   │
  │           │          │ (email) {    │         │ Alt+] → Sonraki│
  │           │          │   const re=  │         │                │
  └──────────┘          │   ...        │         └────────────────┘
                         └──────────────┘

Copilot Planları

Plan               │ Fiyat        │ Özellikler
───────────────────┼──────────────┼──────────────────────
Copilot Free       │ Ücretsiz     │ Limitli code completion,
                   │              │ limitli chat
Copilot Pro        │ $10/ay       │ Sınırsız tamamlama, chat,
                   │              │ CLI, çoklu model
Copilot Business   │ $19/user/ay  │ Org yönetimi, policy kontrol,
                   │              │ IP indemnity
Copilot Enterprise │ $39/user/ay  │ Bing search, dökümantasyon
                   │              │ indexleme, fine-tuning

Kurulum

# VS Code'da:
# 1. Extensions → "GitHub Copilot" ara → Install
# 2. Extensions → "GitHub Copilot Chat" ara → Install
# 3. GitHub hesabınızla giriş yapın

# JetBrains IDE'lerde:
# Settings → Plugins → "GitHub Copilot" → Install

# Neovim'de:
# github/copilot.vim plugin'i

Code Completion — Satır/Blok Tamamlama

Nasıl Çalışır?

Copilot, yazdığınız kodun bağlamını analiz eder:

  • Dosyadaki mevcut kod

  • Açık olan diğer dosyalar

  • Yorum satırları

  • Fonksiyon/değişken isimleri

  • Import'lar

Ve bu bağlama uygun kod önerir.

Pratik Örnekler

Fonksiyon İsminden Tamamlama

// Sadece fonksiyon ismini yazın, Copilot gövdeyi önersin

function calculateShippingCost(weight: number, distance: number): number {
  // Copilot önerisi (Tab ile kabul):
  const baseRate = 5.99;
  const weightRate = weight * 0.5;
  const distanceRate = distance * 0.01;
  return baseRate + weightRate + distanceRate;
}

Yorum'dan Kod Üretme

# Bir liste içindeki tekrar eden elemanları kaldır
# ve sıralanmış şekilde döndür
def remove_duplicates_sorted(items):
    # Copilot önerisi:
    return sorted(set(items))

# Verilen bir tarihin hafta sonu olup olmadığını kontrol et
def is_weekend(date):
    # Copilot önerisi:
    return date.weekday() in (5, 6)

Pattern'den Devam Etme

// Bir tane yazdığınızda, Copilot pattern'i anlar

const routes = {
  '/':        HomeController.index,
  '/about':   AboutController.index,
  // Copilot önerileri:
  '/contact': ContactController.index,
  '/blog':    BlogController.index,
  '/login':   AuthController.login,
  '/signup':  AuthController.signup,
};

Test Yazımı

// test dosyasında sadece describe yazın

describe('formatCurrency', () => {
  // Copilot önerileri:
  it('should format Turkish Lira correctly', () => {
    expect(formatCurrency(1500, 'TRY')).toBe('₺1.500,00');
  });

  it('should handle zero amount', () => {
    expect(formatCurrency(0, 'TRY')).toBe('₺0,00');
  });

  it('should handle negative amounts', () => {
    expect(formatCurrency(-50, 'TRY')).toBe('-₺50,00');
  });

  it('should default to TRY when no currency specified', () => {
    expect(formatCurrency(100)).toBe('₺100,00');
  });
});

Kısayollar

VS Code Copilot Kısayolları:
──────────────────────────────────
Tab          → Öneriyi kabul et
Esc          → Öneriyi reddet
Alt + ]      → Sonraki öneri
Alt + [      → Önceki öneri
Ctrl+Enter   → Tüm önerileri panel'de göster (Copilot pane)

💡 İpucu: İyi yorum yazmak, Copilot'un önerilerini dramatik olarak iyileştirir. "// sort array" yazmak yerine "// Sort users by last login date in descending order, excluding inactive accounts" yazmak çok daha iyi sonuç verir. Copilot'a ne kadar bağlam verirseniz, o kadar isabetli önerir.

Copilot Chat — AI ile Sohbet

Inline Chat (Ctrl+I)

Kodun içinde, belirli bir bölüm hakkında soru sormak veya değişiklik istemek:

1. Kod bloğunu seçin
2. Ctrl+I (veya Cmd+I)
3. İstediğinizi yazın

Örnek komutlar:
─────────────────────
"Bu fonksiyonu TypeScript'e çevir"
"Error handling ekle"
"Bu kodu optimize et"
"Bu regex'i açıkla"
"Unit test yaz"
"JSDoc ekle"

Chat Panel

VS Code'un sol panelinde Copilot Chat açabilirsiniz:

Örnek sohbetler:
─────────────────────────────────────────

Siz: Bu projede authentication nasıl çalışıyor?
Copilot: [Projedeki auth dosyalarını analiz eder ve açıklar]

Siz: Express middleware olarak rate limiter yaz
Copilot: [Tam çalışan rate limiter middleware kodu üretir]

Siz: Bu error'ı nasıl düzeltebilirim?
     [hata mesajını yapıştırın]
Copilot: [Hatanın nedenini ve çözümünü açıklar]

Chat Komutları (Slash Commands)

/explain   → Seçili kodu açıkla
/fix       → Seçili koddaki hatayı düzelt
/tests     → Seçili kod için test yaz
/doc       → Dökümantasyon/JSDoc ekle
/optimize  → Kodu optimize et
/new       → Yeni proje/dosya oluştur
/clear     → Chat geçmişini temizle
# Kullanım örnekleri:

/explain Bu recursive fonksiyon ne yapıyor?

/fix TypeError: Cannot read property 'map' of undefined

/tests Bu validateEmail fonksiyonu için edge case testleri yaz

/doc Bu API endpoint'i için OpenAPI dökümantasyonu oluştur

Chat Participants (@)

Copilot Chat'te belirli "katılımcılara" hitap edebilirsiniz:

@workspace  → Tüm projeyi bağlam olarak kullan
@vscode     → VS Code ayarları ve kısayolları hakkında
@terminal   → Terminal komutları hakkında

Örnekler:
──────────
@workspace Bu projede database bağlantısı nerede yapılıyor?
@workspace Authentication flow'u bana açıkla
@vscode TypeScript hataları için auto-fix nasıl açarım?
@terminal Bu projeyi Docker ile nasıl çalıştırırım?

Copilot CLI — Terminal'de AI

Kurulum

# GitHub CLI extension olarak
gh extension install github/gh-copilot

# Kullanım
gh copilot suggest "find all files larger than 100MB"
gh copilot explain "git log --oneline --graph --all"

Pratik Örnekler

# Komut önerisi
$ gh copilot suggest "find all TODO comments in JavaScript files"
# Öneri: grep -rn "TODO" --include="*.js" --include="*.ts" .

$ gh copilot suggest "compress all PNG files in current directory"
# Öneri: find . -name "*.png" -exec pngquant --force --quality=65-80 {} \;

$ gh copilot suggest "show disk usage sorted by size"
# Öneri: du -sh * | sort -rh | head -20
# Komut açıklama
$ gh copilot explain "awk '{print $2}' file.txt | sort | uniq -c | sort -rn"
# Açıklama:
# 1. file.txt'nin her satırının 2. sütununu alır
# 2. Alfabetik sıralar
# 3. Tekrar sayısını hesaplar
# 4. Sayıya göre büyükten küçüğe sıralar

Copilot'u Etkili Kullanma

İyi Prompt Yazma Teknikleri

# ❌ Zayıf prompt
# veri çek

# ✅ Güçlü prompt
# Fetch user data from the /api/users endpoint,
# handle pagination (limit: 100 per page),
# retry on 429 (rate limit) with exponential backoff,
# return all users as a flat list
// ❌ Zayıf: belirsiz isim
function process(data) {
  // Copilot ne yapacağını bilemez
}

// ✅ Güçlü: açık isim + yorum
/**
 * Validates a Turkish phone number.
 * Accepted formats: +90 5XX XXX XXXX, 05XX XXX XXXX
 * Returns true if valid, false otherwise.
 */
function validateTurkishPhoneNumber(phone: string): boolean {
  // Copilot çok daha isabetli önerecek
}

Context Dosyaları

Projenize .github/copilot-instructions.md ekleyerek Copilot'a proje hakkında bilgi verebilirsiniz:

<!-- .github/copilot-instructions.md -->

# Copilot Instructions

## Project Overview
This is a Next.js 14 e-commerce application using:
- TypeScript strict mode
- Prisma ORM with PostgreSQL
- Tailwind CSS
- Zustand for state management

## Coding Standards
- Use functional components with hooks
- Prefer named exports
- Use `async/await` over `.then()` chains
- All functions must have JSDoc comments
- Error messages in Turkish

## File Structure
- `src/app/` - Next.js App Router pages
- `src/components/` - Reusable UI components
- `src/lib/` - Utility functions and configurations
- `src/hooks/` - Custom React hooks
- `prisma/` - Database schema and migrations

Copilot'un İyi Olduğu Durumlar

✅ Boilerplate kod yazma (CRUD, form, validation)
✅ Test yazma (özellikle happy path)
✅ Regex oluşturma
✅ Dönüşüm (Python → JS, callback → async/await)
✅ Dökümantasyon/JSDoc oluşturma
✅ SQL query yazma
✅ Bir pattern'in devamını getirme
✅ Basit algoritma implementasyonu

Copilot'un Dikkatli Olmanız Gereken Durumlar

⚠️ Güvenlik hassas kod (auth, encryption, payment)
⚠️ Karmaşık iş mantığı (domain-specific logic)
⚠️ Performans kritik kod (her önerinin O(n) maliyetini kontrol edin)
⚠️ Lisans hassasiyeti (training data'dan gelen kod)
⚠️ API key, secret, credential içeren kod
⚠️ Database migration (yıkıcı olabilir)

⚠️ Dikkat: Copilot'un önerdiği kodu body review etmeden kabul etmeyin. AI üç tür hata yapar: (1) Doğru görünen ama edge case'lerde kırılan kod, (2) Deprecated API kullanan kod, (3) Güvenlik açığı içeren kod. Her öneriyi kritik gözle değerlendirin.

Copilot ile Git Workflow'u

Commit Mesajı Önerisi

Copilot, staging area'daki değişikliklere bakarak commit mesajı önerebilir:

VS Code'da:
1. Değişikliklerinizi stage edin (git add)
2. Source Control panelinde commit mesajı alanında ✨ (sparkle) ikonuna tıklayın
3. Copilot diff'e bakarak uygun commit mesajı önerir

Örnek:
Diff: auth.ts'de JWT validation eklendi, test dosyası güncellendi
Copilot önerisi: "feat(auth): add JWT token validation with expiry check"

PR Description Önerisi

GitHub'da PR açarken Copilot description yazmaya yardım eder:

GitHub PR sayfasında:
1. "Create Pull Request" sayfasına gidin
2. Description alanında Copilot ikonuna tıklayın
3. Copilot tüm commit'lere ve diff'e bakarak özet yazar

Örnek çıktı:
## Summary
This PR adds user authentication using JWT tokens.

## Changes
- Added JWT validation middleware
- Created login and register endpoints
- Added user model with password hashing
- Updated API routes configuration

## Testing
- Added unit tests for token validation
- Added integration tests for auth endpoints

AI Destekli Diğer Araçlar

GitHub Copilot Dışındaki Alternatifler

Araç             │ Özellik
─────────────────┼──────────────────────────────
Cursor           │ AI-first IDE, agentic coding
Cline            │ VS Code extension, agentic
Aider            │ Terminal tabanlı AI assistant
Continue         │ Open source, çoklu model
Amazon Q Dev     │ AWS entegrasyonlu
Tabnine          │ Privacy-focused, lokal model
Codeium / Windsurf│ Ücretsiz tier mevcut

AI Code Review

# GitHub Actions ile AI code review
# .github/workflows/ai-review.yml
name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    steps:
      - uses: coderabbitai/ai-pr-reviewer@latest
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}

Etik ve Sorumluluk

Lisans Konusu

Copilot, public GitHub repository'lerinden eğitilmiştir. Bu, bazı etik soruları gündeme getirir:

Sorular:
─────────────────────────────────────────
❓ Copilot'un önerdiği kod, başka birinin GPL lisanslı kodundan mı geliyor?
❓ Copilot'un ürettiği kodun telif hakkı kime ait?
❓ Şirketim Copilot'un önerdiği kodu ticari projede kullanabilir mi?

GitHub'ın yanıtı:
• Copilot Business/Enterprise → IP indemnity (tazminat garantisi)
• Duplicate detection filtresi (bilinen açık kaynak kodla eşleşmeyi engeller)
• Ayar: "Block suggestions matching public code" → Açık olmalı

Best Practices

1. 🧐 HER ÖNERİYİ İNCELEYİN — körü körüne Tab basmayın
2. 🔒 GÜVENLİK KODUNU MANUAL YAZIN — auth, crypto, payment
3. 📖 ANLMADIĞINIZ KODU KABUL ETMEYİN — çalışıyorsa bile
4. 🧪 TEST YAZIN — Copilot'un yazdığı kodu test edin
5. 📝 CODE REVIEW — AI kodu da human review'dan geçmeli
6. 🏷️ ŞİRKET POLİTİKASI — Copilot kullanımı onaylı mı kontrol edin

💡 İpucu: Copilot'u "akıllı autocomplete" olarak düşünün, "otomatik programcı" olarak değil. En verimli kullanım şekli: siz mimariyi, yapıyı ve mantığı belirlersiniz, Copilot boilerplate kısmını hızlandırır.

Copilot Agent Mode ve MCP (Model Context Protocol)

2025 sonrası Copilot, agent mode ile tek komutla çoklu dosya düzenleme, terminal komutları çalıştırma ve otomatik test yazma yeteneği kazandı:

Agent Mode Yetenekleri:
───────────────────────
• Birden fazla dosyayı aynı anda düzenleme
• Terminal komutları çalıştırma (npm install, test vb.)
• Hata bulup düzeltme döngüsü (iterate)
• Proje yapısı analizi
• Bağımlılık yönetimi

Kullanım (VS Code Insiders / Copilot Chat):
@workspace /new Create a REST API with Express, 
TypeScript, Prisma, and PostgreSQL. Include:
- User CRUD endpoints
- JWT authentication
- Input validation with Zod
- Error handling middleware
- Unit tests with Jest

MCP — Dış Araçlarla Entegrasyon

Model Context Protocol, Copilot'un (ve diğer AI araçlarının) dış servislerle iletişim kurmasını sağlar:

// .vscode/mcp.json — MCP server tanımları
{
  "servers": {
    "database": {
      "command": "npx",
      "args": ["mcp-server-postgres", "postgresql://localhost/mydb"]
    },
    "github": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-github"]
    }
  }
}

Bu sayede Copilot Chat'te:

  • "Veritabanındaki users tablosunun şemasını göster"

  • "Son 10 issue'u listele"

  • "Bu PR'daki değişiklikleri özetle"

gibi istekler yapabilirsiniz.


Copilot Ayarları ve Konfigürasyon

// VS Code settings.json
{
  // Copilot'u belirli dillerde kapat
  "github.copilot.enable": {
    "*": true,
    "markdown": true,
    "plaintext": false,
    "yaml": true
  },

  // Inline öneri
  "editor.inlineSuggest.enabled": true,

  // Chat ayarları
  "github.copilot.chat.localeOverride": "tr"
}
# Organization seviyesinde Copilot yönetimi
# GitHub → Organization → Settings → Copilot

# Ayarlar:
# ☑ Suggestions matching public code: Block
# ☑ Allow Copilot to access Bing (Enterprise)
# ☑ Editor: Allow
# ☑ CLI: Allow
# ☐ Copilot in github.com: Disable (istenirse)

Özet

Bu derste GitHub Copilot ve AI destekli geliştirme araçlarını ele aldık:

  • 🤖 Copilot — bağlam-farkındalı kod tamamlama, yorum'dan kod üretme

  • 💬 Copilot Chat — inline soru-cevap, /explain, /fix, /tests komutları

  • ⌨️ Copilot CLI — terminal'de doğal dil ile komut bulma ve açıklama

  • 🎯 Etkili kullanım — iyi prompt yazma, context dosyaları, güçlü yönler

  • ⚠️ Dikkat noktaları — güvenlik kodu, lisans, körü körüne güvenme

  • 🔄 Git entegrasyonu — commit mesajı, PR description önerisi

  • ⚖️ Etik — lisans, IP indemnity, şirket politikası


💡 Son İpucu: AI araçları hızla gelişiyor. Bugün Copilot, yarın daha güçlü araçlar çıkacak. Ama temel prensip değişmez: AI asistanınız, siz mühendissiniz. Mimariyi siz tasarlarsınız, kararları siz verirsiniz, kaliteyi siz kontrol edersiniz. AI'ı "hızlandırıcı" olarak kullanın, "yerine geçen" olarak değil.

Bir sonraki derste GitHub'ın güvenlik özelliklerini inceleyeceğiz: Dependabot, secret scanning, code scanning ve SBOM.