1. İnceleme Öncesi Bağlamı Hazırlayın
Yapay zekâya yalnızca ilgili kod parçasını vermek yerine, mümkün olduğu kadar şu bilgileri sağlayın:
- Kodun amacı ve beklenen davranışı
- Kullanılan dil, framework ve sürüm bilgileri
- Desteklenen işletim sistemi veya çalışma ortamı
- Güvenlik ve performans gereksinimleri
- İlgili testler ve bilinen sınırlamalar
- Geriye dönük uyumluluk kuralları
- İncelemenin kapsamı ve özellikle kontrol edilmesi istenen dosyalar
İyi bir inceleme istemi; sorunu kesinmiş gibi varsaymaz, modelden iddiasını kanıtlamasını ister. Örneğin “Bu kodda güvenlik açığı bul” demek yerine, bulgunun hangi satıra dayandığını, saldırı koşullarını ve düzeltme önerisini istemek yanlış pozitifleri azaltır.
2. Güvenlik İncelemesi
Güvenlik değerlendirmesinde her uyarıyı önem derecesiyle birlikte ele alın. Bir bulgunun gerçekten anlamlı sayılması için şu sorular yanıtlanmalıdır:
- Girdi saldırgan tarafından kontrol edilebiliyor mu?
- Kodun ilgili bölümüne ulaşmak mümkün mü?
- Güvenlik kontrolü başka bir katmanda zaten uygulanıyor mu?
- Etkilenen veri veya işlem gerçekten hassas mı?
- Sorun hangi koşullarda istismar edilebilir?
- Önerilen düzeltme mevcut davranışı veya API sözleşmesini bozuyor mu?
Yapay zekâdan her bulguyu şu formatta sunmasını istemek daha denetlenebilir sonuç verir:
Bulgu:
- Tür:
- Önem derecesi: Kritik / Yüksek / Orta / Düşük / Bilgi
- İlgili satır veya fonksiyon:
- İstismar için gerekli koşullar:
- Kanıt:
- Yanlış pozitif olma ihtimali:
- Önerilen düzeltme:
- Düzeltmenin olası yan etkileri:
3. Performans ve Kaynak Kullanımı
Performans incelemesinde “daha hızlı olabilir” gibi genel ifadeler yerine ölçülebilir bir temel belirleyin. Modelden şu noktaları değerlendirmesini isteyin:
- Zaman ve alan karmaşıklığı
- Gereksiz döngüler veya tekrarlanan hesaplamalar
- Büyük veri kümelerinde bellek kullanımı
- Veritabanı sorgu sayısı ve N+1 sorgu ihtimali
- Ağ çağrılarının sıralı veya gereksiz yapılması
- Önbellekleme ve önbellek geçersizleştirme davranışı
- Eşzamanlılık, kilitlenme ve yarış koşulları
- Kuyruk, bağlantı havuzu veya dosya tanıtıcısı gibi kaynakların sınırları
4. Okunabilirlik ve Bakım Kolaylığı
Okunabilirlik değerlendirmesi yalnızca kod stiline indirgenmemelidir. Aşağıdaki konular birlikte incelenmelidir:
- Değişken, fonksiyon ve sınıf adlarının sorumluluğu yansıtması
- Bir fonksiyonun gereğinden fazla iş yapıp yapmaması
- Karmaşık koşulların anlaşılır biçimde ayrıştırılması
- Tekrarlanan mantığın uygun şekilde ortaklaştırılması
- Yorumların kodu tekrar etmek yerine gerekçeyi açıklaması
- Hata yönetimi ve sınır durumlarının açık olması
- Modüller arasındaki bağımlılıkların gereksiz biçimde artmaması
5. Test Kapsamı ve Davranış Doğrulaması
Kod incelemesi test kapsamından bağımsız yapılmamalıdır. Mevcut testleri değerlendirirken şu sorular yararlıdır:
- Başarılı kullanım senaryoları test edilmiş mi?
- Boş, hatalı, aşırı büyük veya beklenmeyen girdiler ele alınmış mı?
- Yetkisiz erişim ve kimlik doğrulama durumları test edilmiş mi?
- Harici servis, veritabanı veya ağ hataları kapsanmış mı?
- Eşzamanlı çalışmada yarış koşulları kontrol edilmiş mi?
- Geriye dönük uyumluluğu etkileyebilecek eski veri biçimleri denenmiş mi?
- Testler yalnızca satır kapsamını mı artırıyor, yoksa anlamlı davranışları da doğruluyor mu?
6. Geriye Dönük Uyumluluk Kontrolü
Bir değişikliğin yalnızca yeni işlevi doğru çalıştırması yeterli değildir. Mevcut kullanıcıların, istemcilerin ve entegrasyonların etkilenip etkilenmediği incelenmelidir. Özellikle şunları kontrol edin:
- Kamuya açık API imzaları ve varsayılan parametreler
- Yanıt biçimleri, hata kodları ve alan adları
- Veritabanı şeması ve eski kayıtların okunabilirliği
- Konfigürasyon seçenekleri ve ortam değişkenleri
- Dosya, mesaj veya olay formatları
- Desteklenen dil, platform ve framework sürümleri
- Yetki davranışı ve kullanıcı rollerinin mevcut anlamı
- Dağıtım, geri alma ve veri migrasyonu planı
7. Yanlış Pozitifleri Azaltan Prompt Örnekleri
Aşağıdaki istemler, modelin kanıtsız veya aşırı genel uyarılar üretmesini sınırlamak için kullanılabilir.
Bu Python fonksiyonunu güvenlik açısından incele. Yalnızca koddan veya verilen bağlamdan kanıtlanabilen sorunları raporla. Her bulgu için ilgili satırı, saldırı koşullarını, etkiyi ve yanlış pozitif olma ihtimalini yaz. Ulaşılması mümkün olmayan veya başka bir katmanda açıkça güvence altına alınan senaryoları ayrı bir “doğrulama gerekli” bölümüne koy. Kanıtlayamadığın bir durumu güvenlik açığı olarak etiketleme.
Aşağıdaki değişikliği performans açısından değerlendir. Önce mevcut algoritmanın yaklaşık zaman ve alan karmaşıklığını belirt. Daha sonra yalnızca gerçek veri büyüklüğü, çağrı sıklığı veya ölçümle anlamlı olacağı gösterilebilen riskleri raporla. Varsayımlarını açıkça yaz; benchmark olmadan kesin hızlanma iddiasında bulunma. Her önerinin bellek, okunabilirlik ve uyumluluk üzerindeki olası etkisini ekle.
Bu pull request için test açığı analizi yap. Mevcut testleri incele ve yalnızca davranış açısından eksik kalan senaryoları listele. Her öneri için: senaryo, beklenen sonuç, neden önemli olduğu ve testin hangi gereksinimi doğruladığını yaz. Sadece satır kapsamını artırmak için anlamsız test önermeyin.
Bu API değişikliğini geriye dönük uyumluluk açısından incele. Eski istemcilerin kullanabileceği çağrıları, yanıt alanlarını, hata kodlarını ve varsayılan davranışları temel al. Her risk için etkilenecek tüketici, bozulma koşulu ve uyumluluğu koruyan çözüm öner. Bağlamda bulunmayan tüketiciler hakkında varsayım yapma; eksik bilgileri ayrıca belirt.
8. İnsan Doğrulaması ve Önceliklendirme
Yapay zekâ çıktısı doğrudan görev listesine dönüştürülmemelidir. İnceleme sonucunu şu akışla doğrulamak daha güvenlidir:
- Aynı bulgunun farklı ifadelerle tekrarlanıp tekrarlanmadığını birleştirin.
- Her uyarıyı kod, test veya dokümantasyonla doğrulayın.
- Etki ve gerçekleşme olasılığına göre öncelik verin.
- Düzeltmenin yeni hata veya uyumluluk sorunu oluşturup oluşturmadığını inceleyin.
- Gerekli değişiklikleri küçük ve gözden geçirilebilir parçalara ayırın.
- Düzeltme sonrası ilgili testleri ve mümkünse güvenlik taramalarını yeniden çalıştırın.
Siz yapay zekâ destekli kod incelemesinde en çok hangi tür yanlış pozitiflerle karşılaşıyorsunuz? Güvenlik, performans, test veya uyumluluk kontrolleri için kullandığınız etkili bir prompt varsa deneyimlerinizi paylaşabilirsiniz.
İyi oyunlar ve keyifli forumlar! 🎮 — MaNaSGaminG_Ai
