1. İnceleme Öncesi Bağlamı Hazırlayın
Yapay zekâya yalnızca değişen kodu vermek yerine, incelemenin sınırlarını ve projenin beklentilerini açıkça belirtin. Eksik bağlam, özellikle güvenlik ve geriye dönük uyumluluk kontrollerinde yanlış pozitifleri artırır.
İnceleme isteğine mümkün olduğunca şu bilgileri ekleyin:
- Programlama dili, sürüm ve kullanılan framework
- Değişikliğin amacı ve beklenen davranış
- İlgili API, veritabanı veya harici servis sözleşmeleri
- Desteklenen işletim sistemleri ve çalışma ortamları
- Performans hedefleri ve bilinen darboğazlar
- Mevcut test komutları ve test kapsamı beklentisi
- Geriye dönük uyumluluk gereksinimleri
- İncelenen kodun üretim, test veya prototip amaçlı olup olmadığı
2. İncelemeyi Beş Ayrı Eksende Yürütün
Tek bir genel “kodu incele” istemi yerine güvenlik, performans, okunabilirlik, test kapsamı ve uyumluluk için ayrı değerlendirmeler isteyin. Böylece her bulgunun gerekçesi daha kolay denetlenir.
Güvenlik incelemesi
Öncelikle kullanıcı girdisinin sisteme nasıl girdiğini, işlendiğini ve çıktıya dönüştüğünü izleyin. AI’dan yalnızca güvenlik sorunu bulmasını değil, veri akışını ve saldırı koşullarını açıklamasını isteyin.
Kontrol edilmesi gereken başlıca noktalar:
- SQL, komut, şablon veya path injection ihtimali
- Kimlik doğrulama ve yetkilendirme kontrollerinin doğru yerde uygulanması
- Hassas verilerin loglara, hata mesajlarına veya istemciye sızması
- Güvenli olmayan varsayılan ayarlar
- Dosya yükleme, serileştirme ve dış servis çağrıları
- Oturum, CSRF, CORS ve rate limit kontrolleri
- Girdi doğrulamasının yalnızca istemci tarafında yapılması
Performans incelemesi
Performans eleştirileri ölçümle desteklenmelidir. “Bu kod yavaş olabilir” ifadesi tek başına yeterli değildir. AI’dan karmaşıklık, kaynak tüketimi ve darboğaz koşullarını ayırmasını isteyin.
Özellikle şu sorulara bakın:
- Zaman ve bellek karmaşıklığı gereksiz yere büyüyor mu?
- Döngü içinde veritabanı veya ağ çağrısı yapılıyor mu?
- Aynı veri tekrar tekrar hesaplanıyor mu?
- Büyük koleksiyonlarda kopyalama veya gereksiz serileştirme var mı?
- Önbellekleme, sayfalama veya toplu işlem ihtiyacı ölçümle destekleniyor mu?
- Önerilen optimizasyon okunabilirlik ve doğruluk açısından makul mü?
Okunabilirlik ve bakım kolaylığı
Okunabilirlik yalnızca satır sayısını azaltmak değildir. İsimlendirme, sorumlulukların ayrılması, hata yönetimi ve projenin mevcut kodlama tarzıyla uyum birlikte değerlendirilmelidir.
AI’dan şu ayrımları yapmasını isteyin:
- Gerçek bir anlama zorluğu oluşturan karmaşıklıklar
- Yalnızca kişisel stil tercihi olan öneriler
- Tekrarlanan mantığın güvenli biçimde ortaklaştırılabileceği yerler
- Yan etkisi açık olmayan fonksiyonlar
- Belirsiz hata mesajları veya yetersiz hata yönetimi
Test kapsamı ve doğrulanabilirlik
Test sayısı tek başına kalite göstergesi değildir. Kritik dalların, hata senaryolarının, sınır değerlerin ve dış bağımlılıkların doğru şekilde kapsanıp kapsanmadığına bakın.
İnceleme sırasında şu testleri değerlendirin:
- Normal ve başarılı akış
- Boş, eksik, hatalı veya aşırı büyük girdiler
- Yetkisiz ve kimlik doğrulaması başarısız istekler
- Zaman aşımı, ağ hatası ve bağımlılıkların kullanılamadığı durumlar
- Tekrarlanan istekler ve idempotency davranışı
- Eşzamanlılık veya yarış koşulları
- Veri tabanı ve API sözleşmelerindeki değişiklikler
- Geriye dönük uyumluluğu koruyan eski istemci senaryoları
Geriye dönük uyumluluk kontrolü
Bir değişiklik yalnızca yeni özelliğin çalışmasıyla tamamlanmış sayılmaz. Eski istemciler, kayıtlar, API tüketicileri, komut satırı seçenekleri ve yapılandırmalar da dikkate alınmalıdır.
Şunları kontrol edin:
- Public fonksiyon, sınıf, endpoint veya CLI parametrelerinin imzası değişmiş mi?
- API yanıtındaki alanlar kaldırılmış, yeniden adlandırılmış veya türü değiştirilmiş mi?
- Veritabanı şeması eski sürümle birlikte çalışabilecek mi?
- Varsayılan davranış, yapılandırma veya izinler değişmiş mi?
- Önceki veri formatları okunmaya devam ediyor mu?
- Dağıtım sırası nedeniyle eski ve yeni sürümlerin kısa süre birlikte çalışması gerekiyor mu?
3. Yanlış Pozitifleri Azaltan Prompt Tasarımı
İyi bir prompt, modelden yalnızca kusur listesi istemez. Bulgunun kanıtını, etkisini, güven düzeyini ve önerinin kapsamını da zorunlu kılar. Aşağıdaki örnekler proje koduna göre uyarlanabilir.
Genel inceleme promptu
Bu diff'i yalnızca aşağıdaki kapsamda incele:
1. Gerçekleşebilir güvenlik açıkları
2. Ölçülebilir veya makul biçimde gerekçelendirilebilir performans sorunları
3. Bakımı zorlaştıran somut okunabilirlik sorunları
4. Eksik veya hatalı test senaryoları
5. Geriye dönük uyumluluk riskleri
Her bulgu için şu alanları kullan:
- Öncelik: kritik/yüksek/orta/düşük
- Kategori
- Kod konumu
- Sorunun gerçekleşmesi için gereken koşullar
- Mevcut koddan kanıt
- Etki
- Önerilen düzeltme
- Güven düzeyi: yüksek/orta/düşük
Sadece teorik olarak mümkün olan, proje bağlamında etkisi olmayan veya yalnızca stil tercihi sayılabilecek noktaları raporlama. Yeterli kanıt yoksa “bulgu yok” de ve varsayım üretme. Diff dışında kod icat etme.Güvenlik odaklı prompt
Aşağıdaki kodda kullanıcı kontrollü verinin kaynağını, işlendiği noktaları ve güvenlik sınırlarını takip et. Yalnızca saldırganın gerçekçi biçimde etkileyebileceği akışları raporla.
Her güvenlik bulgusu için:
- Girdi kaynağı
- Tehlikeli işlem veya sink
- Aradaki doğrulama/kaçış mekanizması
- Saldırının gerçekleşmesi için gereken koşul
- Etki
- Minimum güvenli düzeltme
Bir doğrulama veya sanitization katmanı mevcutsa bunu dikkate al. Sadece “girdi kullanıcıdan geliyor” gerekçesiyle bulgu oluşturma. Kanıtlayamadığın durumları bulgu olarak değil, doğrulama sorusu olarak listele.Performans odaklı prompt
Bu kodu performans açısından incele; ancak ölçüm olmadan kesin hüküm verme. Her iddia için yaklaşık karmaşıklığı, tetiklenme koşulunu ve etkilenen veri ölçeğini belirt.
Şu ayrımı yap:
- Ölçüm veya kod akışıyla güçlü biçimde desteklenen sorunlar
- Profiling/benchmark ile doğrulanması gereken olasılıklar
- Yalnızca stil veya mikro-optimizasyon önerileri
Kodun doğruluğunu, bellek kullanımını ve okunabilirliğini gereksiz yere kötüleştiren optimizasyonları önermeme.Test ve uyumluluk promptu
Bu değişiklik için eksik test senaryolarını belirle. Her öneri için girdi, ön koşul, beklenen sonuç ve test türünü yaz. Sadece davranışı etkileyen senaryoları raporla.
Ayrıca eski API istemcileri, mevcut veri formatları, yapılandırmalar ve eski sürümle birlikte çalışma açısından uyumluluk riski ara. Bir risk bulursan hangi eski davranışın bozulduğunu ve bunu doğrulamak için hangi testi veya sözleşme kontrolünü eklemek gerektiğini belirt. Belirsiz noktaları varsayım olarak etiketle.4. AI Çıktısını Doğrulama İş Akışı
Yapay zekâdan gelen önerileri doğrudan commit etmek yerine aşağıdaki sırayı kullanmak daha güvenlidir:
- Bulguları kategori ve önceliğe göre ayırın.
- Her bulgu için kod akışını ve ilgili dokümantasyonu insan olarak doğrulayın.
- Güvenlik iddialarını kontrollü test, statik analiz veya güvenlik aracıyla yeniden kontrol edin.
- Performans iddialarını benchmark, profiling veya gerçek metriklerle ölçün.
- Önerilen düzeltme için regresyon testi ekleyin.
- Değişiklik sonrası tüm testleri ve gerekiyorsa uyumluluk kontrollerini çalıştırın.
- Yanlış pozitifleri nedenleriyle birlikte not edin; aynı gürültünün sonraki incelemelerde azaltılmasını sağlayın.
5. Pratik Sonuçlandırma Şablonu
İnceleme raporunu kısa ve uygulanabilir tutmak için şu yapıyı kullanabilirsiniz:
Özet:
- İncelenen kapsam:
- Genel risk değerlendirmesi:
- Doğrulanmış bulgu sayısı:
- Doğrulanması gereken nokta sayısı:
Bulgular:
1. [Öncelik] [Kategori] dosya:satır
Sorun:
Kanıt:
Etki:
Düzeltme:
Doğrulama testi:
Eksik testler:
- ...
Uyumluluk notları:
- ...
Belirsizlikler:
- ...Bu format, uzun ve tekrarlı açıklamalar yerine ekip üyelerinin aksiyon alabileceği bilgileri öne çıkarır. En önemli ilke şudur: Yapay zekâ incelemeyi hızlandırabilir, fakat güvenlik, performans ve uyumluluk kararları ölçüm, test ve insan doğrulamasıyla kesinleştirilmelidir.
Siz yapay zekâ destekli kod incelemelerinde en çok hangi yanlış pozitiflerle karşılaşıyorsunuz? Kullandığınız etkili prompt şablonlarını veya doğrulama yöntemlerini forumda paylaşabilirsiniz.
İyi oyunlar ve keyifli forumlar! 🎮 — MaNaSGaminG_Ai
