Giriş: Neden yapay zeka ile kod inceleme ve refaktör?

Yapay zeka kullanımı, kod inceleme ve refaktör süreçlerini hızlandırmak ve tekrarlayan görevleri azaltmak amacıyla giderek daha sık tercih ediliyor. Modeller; rutin çekme istekleri, stil denetimleri ve hataları tespit etme gibi görevlerde geliştiricilere yardımcı olabiliyor. Örneğin OpenAI'ın Codex, yazılımcılara kod tamamlama ve yeniden yapılandırma gibi görevlerde destek olacak şekilde tasarlanmıştır (OpenAI Codex).

Benzer biçimde, Microsoft'un yapay zeka destekli uygulama ve kod değerlendirme araçları da özellikle .NET modernizasyonu gibi senaryolarda kodu analiz ederek performans, güvenlik ve okunabilirlik gibi kriterlere göre öneriler sunmaktadır (Microsoft Learn).

Prompt yazmanın temelleri: Etkili sonuç için bileşenler

  • Bağlam verin: Dosya yolu, dil, kod parçasının amacı, kısıtlar (ör. desteklenen sürüm) gibi bilgileri ekleyin.
  • Açık görev tanımı: "Kod stili kontrolü yap", "güvenlik açıklarını bul ve önceliklendir" gibi net komutlar kullanın.
  • Çıktı formatı belirtin: Özet + detaylı bulgu, JSON çıktı, patch önerisi gibi beklenen formatı söyleyin.
  • Kapsam belirleyin: Tam repo mu yoksa tek dosya mı? Değişiklik toleransı (ör. küçük yamalar vs. büyük refaktör).
  • Örnek ve kurallar ekleyin: Örnek bir iyi uygulama veya kabul kriterleri verin.
  • Güven seviyesi/sertlik: Önerilerin otomatik uygulanıp uygulanmayacağını belirtin (ör. "sadece öneri", "otomatik patch oluştur" gibi).

Hazır prompt şablonları (kategoriye göre)

Kod inceleme: Stil, okunabilirlik ve küçük hatalar

  1. Bu dosyayı incele: [dosya içeriği]. Dikkat et: stil, değişken isimlendirmesi, fonksiyon karmaşıklığı ve potansiyel hata noktaları. Önce 3 maddelik kısa bir özet ver, sonra bulunan her sorun için: dosya, satır aralığı, tür (stil/okunabilirlik/hata), öneri (en fazla 2 cümle) ve gerekliyse küçük bir kod önerisi ekle.
  2. Belirtilen kodda kod kokusu (code smell) veya gereksiz tekrar var mı? Bulguları öncelik sırasına göre (high/medium/low) listele ve her biri için uygulanabilir bir düzeltme önerisi sun.

Güvenlik incelemesi

  1. Verilen kod parçacığını güvenlik açısından tara: giriş doğrulama, SQL enjeksiyonu, açık anahtar sızması, yetkilendirme boşlukları gibi alanları kontrol et. Her bulgu için açıklama, risk seviyesi (high/medium/low) ve önerilen yama adımlarını ver.

Performans ve ölçek

  1. Bu fonksiyonun performansını analiz et. Olası darboğazları belirle, zaman/uzay karmaşıklığını kısaca değerlendir ve en az iki alternatif iyileştirme öner.

Refaktör

  1. Verilen git diff veya dosya için kapsamlı bir refaktör önerisi hazırla: fonksiyon ayırma, tekrarları azaltma, isimlendirme iyileştirme. Her öneri için beklenen faydayı (ör. okunabilirlik, test edilebilirlik) kısaca açıkla ve küçük kod transformasyonu örneği ver.
  2. Bu sınıfı SOLID prensiplerine göre değerlendir ve hangi prensiplerin ihlal edildiğini göster. Her ihlal için kısa bir düzeltme planı sun.

Test ve hata ayıklama

  1. Verilen fonksiyon için unit testler üret. Test adlarını, girişleri ve beklenen sonuçları belirt. Testleri birim testi çerçevesine (ör. xUnit, pytest) uygun şekilde yapılandır.
  2. Bir hata raporu temelinde yeniden üretilebilir adımlar yaz, hangi girdi/çevre koşullarında hatanın tetikleneceğini netleştir ve önerilen ilk debug adımlarını sırala.

Örnek: PR (çekme isteği) için detaylı kod inceleme promptu

Kullanım senaryosu: Bir PR açıldı ve otomatik yorum olarak AI öneri eklemek istiyoruz. Aşağıdaki promptu PR botuna verin:

"PR #123: Değişiklikleri incele. İçerik: [dosya listesi + diff]. Hangi parçalar fonksiyonel değişikliğe yol açıyor, hangi parçalar sadece stil değişikliği? Her fonksiyonel değişiklik için regresyon riski (high/medium/low), gerekli testler ve önerilen ek unit testler listesini ver. Ayrıca 5 maddelik kısa bir özet hazırla ve kritik güvenlik veya performans riski varsa açıkla."

Beklenen çıktı formatı örneği:

  • Kısa özet (3–5 madde)
  • Detaylı bulgular listesi: {dosya, satır aralığı, tür, risk, öneri, test önerisi}
  • Gerekirse küçük patch örneği veya kod snippet

Refaktör promptlarında dikkat edilmesi gerekenler

  • Refaktör isteğinde mevcut API davranışını koruma beklentisini açıkça belirtin (ör. "geriye dönük uyumluluk gerekiyor" veya "breaking change kabul edilebilir").
  • Büyük değişiklikleri küçük adımlara bölün; otomatik araçların büyük ölçekli değişiklikleri tek seferde uygulamasına izin vermeyin.
  • Önce kapsamlı test yazdırın; otomatik refaktörü testler başarılı olduktan sonra uygulayın.

İş akışına entegrasyon: PR, CI ve insan denetimi

Uygulama adımları (örnek):

  1. Pre-commit veya PR botu: AI'ya kısa bir kod inceleme isteği gönderin ve önerileri PR yorumları olarak ekleyin.
  2. CI: AI tarafından önerilen testleri CI'de çalıştırın; hatalı test varsa otomatik uyarı verin.
  3. İnsan-in-the-loop: Her AI önerisi için bir insan onayı şartı koyun; kritik değişikliklerde en az bir kıdemli geliştirici onayı isteyin.
  4. Patch uygulama: AI patch'lerini otomatik oluşturup önerin, ancak doğrudan merge yerine review sürecinden geçirin.

Güvenlik, lisans ve gizlilik uyarıları

  • Hassas veriler veya gizli anahtarları prompt içinde göndermeyin; üçüncü taraf hizmetlerin gizlilik politikasını kontrol edin.
  • Otomatik önerilerin lisans etkisi olabilir; açık kaynak lisanslarına dikkat edin ve kod yeniden düzenlemelerinin lisans uyumluluğunu doğrulayın.
  • Güvenlikle ilgili kritik fonksiyonlarda AI önerilerinin yalnızca başlangıç noktası olarak kullanılmasını ve detaylı manuel inceleme yapılmasını önerin.

Uygulama kontrol listesi (merge öncesi)

  • AI tarafından önerilen değişiklikler için otomatik ve manuel testler çalıştı mı?
  • Geriye dönük uyumluluk ve API sözleşmeleri korunuyor mu?
  • Güvenlik taramaları (statik analiz, dependency scan) temiz mi?
  • Değişikliklerin ticari/etik/lisans etkileri değerlendirildi mi?
  • Bir sorumluluk sahibi (code owner) değişikliği onayladı mı?

Sonuç

Yapay zeka destekli kod inceleme ve refaktör promptları, geliştiricilerin üretkenliğini artırmak ve tekrarlayan işleri azaltmak için güçlü bir yardımcı olabilir. OpenAI Codex gibi modeller ve Microsoft'un AI destekli değerlendirme araçları, analiz ve öneri süreçlerini hızlandırmaya uygundur; yine de her zaman insan denetimi, test ve güvenlik kontrolü gereklidir (OpenAI Codex, Microsoft Learn).


Kaynaklar ve daha fazla okuma:

OpenAI Codex — Resmi sayfa

Microsoft Learn — AI destekli uygulama ve kod değerlendirme araçları