1. İnceleme Öncesi Kapsamı Belirleyin
Yapay zekâya yalnızca kodu göndermek yerine incelemenin amacını, teknoloji yığınını ve kabul kriterlerini açıklayın. Büyük bir projeyi tek seferde inceletmek yerine değişiklikleri küçük ve anlamlı parçalara ayırmak daha sağlıklı sonuç verir.
İnceleme girdisinde mümkünse şu bilgileri belirtin:
- Kullanılan dil, sürüm, framework ve çalışma ortamı
- Değişikliğin amacı ve beklenen davranış
- İlgili dosyalar veya fonksiyonlar
- API, veritabanı ve kimlik doğrulama sınırları
- Performans beklentileri ve kritik kullanım senaryoları
- Desteklenmesi gereken eski sürümler
- Mevcut testlerin kapsamı ve bilinen kısıtlar
2. Güvenlik İncelemesini Kanıt Odaklı Yapın
Güvenlik değerlendirmesinde yapay zekâdan yalnızca “güvenlik açığı bulmasını” istemek, çok sayıda varsayımsal uyarı üretebilir. Bunun yerine veri akışını, güven sınırlarını ve saldırı koşullarını ayrı ayrı inceletin.
Özellikle şu alanlara odaklanın:
- Kullanıcı girdilerinin doğrulanması ve uygun bağlamda kodlanması
- SQL, komut, şablon veya HTML enjeksiyonu ihtimali
- Kimlik doğrulama ve yetkilendirme kontrolleri
- Hassas verilerin günlüklerde, hata mesajlarında veya istemciye dönen yanıtlarda görünmesi
- Dosya, ağ ve dış servis erişimlerinin sınırlandırılması
- Güvenli olmayan varsayılan ayarlar
- Bağımlılıkların sürüm ve güvenlik durumu
- Yarış koşulları, kaynak tüketimi ve hizmet engelleme riskleri
3. Performansı Ölçülebilir Kriterlerle Değerlendirin
Yapay zekâ, iç içe döngüleri veya sık yapılan veritabanı çağrılarını fark edebilir; fakat gerçek darboğazı ölçüm olmadan kesin olarak belirleyemez. Bu nedenle performans uyarılarını profil sonuçları, sorgu planları veya karşılaştırmalı testlerle doğrulayın.
İnceleme sırasında şu sorulara yanıt arayın:
- Zaman ve bellek karmaşıklığı beklenen veri boyutunda kabul edilebilir mi?
- Döngü içinde gereksiz ağ, disk veya veritabanı çağrısı yapılıyor mu?
- Önbellekleme tutarlılık veya bellek kullanımı açısından risk oluşturuyor mu?
- Büyük veri kümelerinde sayfalama, akış işleme veya sınırlandırma gerekiyor mu?
- Eşzamanlı erişimlerde kilitlenme, yarış koşulu veya kuyruk birikmesi oluşabilir mi?
- Önerilen optimizasyon okunabilirliği ya da doğruluğu gereksiz biçimde azaltıyor mu?
4. Okunabilirlik ve Bakımı Birlikte İnceleyin
Okunabilirlik yalnızca satır sayısını azaltmak değildir. İsimlendirme, sorumlulukların ayrılması, hata yönetimi ve kodun mevcut proje alışkanlıklarıyla uyumu birlikte değerlendirilmelidir.
Yapay zekâdan aşağıdaki noktaları kontrol etmesini isteyebilirsiniz:
- Fonksiyon veya sınıflar tek bir sorumluluğa sahip mi?
- Değişken ve fonksiyon isimleri davranışı doğru yansıtıyor mu?
- Karmaşık koşullar anlaşılır biçimde ayrıştırılmış mı?
- Tekrarlanan kod gerçekten ortaklaştırılmaya uygun mu?
- Hata durumları sessizce yutuluyor veya yanlış katmanda mı ele alınıyor?
- Yorumlar kodu tekrar etmek yerine gerekçeyi açıklıyor mu?
- Önerilen refactor, projenin mevcut stil ve mimari kurallarına uyuyor mu?
5. Test Kapsamını Senaryo Bazında Kontrol Edin
Test sayısı tek başına kalite ölçüsü değildir. Kod incelemesinde başarı ve hata durumlarının, sınır değerlerin ve dış bağımlılıkların yeterince temsil edilip edilmediğine bakılmalıdır.
Kontrol listesi:
- Normal kullanım senaryosu test edilmiş mi?
- Boş, eksik, hatalı veya beklenmeyen girdiler ele alınmış mı?
- Yetkisiz ve kimliği doğrulanmamış erişim denenmiş mi?
- Sınır değerler ve büyük veri kümeleri test edilmiş mi?
- Zaman aşımı, ağ hatası ve bağımlılık arızaları kapsanmış mı?
- Tekrarlı çağrılar ve idempotency gereksinimleri kontrol edilmiş mi?
- Eşzamanlı işlemler için uygun test bulunuyor mu?
- Değişikliğin mevcut testleri geçersiz kılmadığı doğrulanmış mı?
- Testler gerçekten davranışı doğruluyor mu, yoksa yalnızca satır kapsamını mı artırıyor?
6. Geriye Dönük Uyumluluğu Ayrı Bir Aşama Olarak Ele Alın
Bir değişiklik yeni davranışı doğru uygulasa bile mevcut kullanıcıları, istemcileri veya entegrasyonları bozabilir. Bu nedenle API sözleşmeleri, veri biçimleri, varsayılan değerler ve hata davranışları ayrıca incelenmelidir.
Şunları kontrol edin:
- Genel API imzaları ve yanıt alanları değişmiş mi?
- Eski istemciler yeni yanıt veya hata biçimiyle çalışmaya devam ediyor mu?
- Veritabanı şeması değişikliği eski uygulama sürümüyle birlikte çalışabiliyor mu?
- Yeni zorunlu alanlar veya farklı varsayılan değerler mevcut verileri etkiliyor mu?
- Serileştirme, tarih-saat, karakter kodlaması veya sıralama davranışı değişmiş mi?
- Yapılandırma ve ortam değişkenlerinde geriye dönük uyumluluk korunmuş mu?
- Kademeli dağıtım, özellik bayrağı veya geri alma planı gerekiyor mu?
7. Yanlış Pozitifleri Azaltan Prompt Tasarımı
İyi bir prompt; yapay zekâdan her olasılığı listelemesini değil, kanıtlanabilir, önceliklendirilebilir ve bağlama uygun bulgular üretmesini ister. Aşağıdaki örnekleri proje bilgilerinize göre uyarlayabilirsiniz.
Rolün: Kıdemli kod inceleme yardımcısı.
Amaç: Aşağıdaki değişikliği güvenlik, performans, okunabilirlik, test kapsamı ve geriye dönük uyumluluk açısından incele.
Kurallar:
- Yalnızca verilen kod ve bağlamdan desteklenebilen bulguları raporla.
- Varsayıma dayanan noktaları kesin hata olarak yazma; "doğrulanması gereken risk" olarak etiketle.
- Her bulgu için önem derecesi, ilgili bölüm, teknik gerekçe, etki ve uygulanabilir düzeltme önerisi ver.
- Stil tercihi ile gerçek hata veya riski birbirinden ayır.
- Aynı kökten gelen uyarıları tek bulgu altında birleştir.
- Sorun yoksa yapay bir bulgu üretme.
Bağlam:
Dil ve sürüm: [bilgi]
Framework: [bilgi]
Değişikliğin amacı: [bilgi]
Desteklenen sürümler: [bilgi]
Kod veya diff:
[kod] Dönüş biçimi:
1. Bulgu
2. Kanıt
3. Etki
4. Önerilen doğrulama veya düzeltme
5. Güven seviyesi: yüksek, orta veya düşük[/code]
Güvenlik için daha dar kapsamlı bir prompt kullanmak yanlış pozitifleri azaltır:
Bu kodda yalnızca dış girdinin güven sınırından hassas bir işleme nasıl aktığını incele.
SQL, komut, HTML, şablon veya dosya yolu enjeksiyonu iddiası sunabilmen için veri akışını ilgili kaynaktan tehlikeli kullanıma kadar göster.
Akış gösterilemiyorsa bulguyu güvenlik açığı olarak değil, inceleme sorusu olarak yaz.
Kimlik doğrulama veya yetkilendirme hakkında kodda kanıt yoksa bunu açıkça belirt; varsayım yapma.
Her bulgu için saldırı ön koşullarını ve güvenli doğrulama adımını ekle.Performans incelemesi için:
Yalnızca ölçülebilir veya algoritmik olarak gerekçelendirilebilir performans risklerini raporla.
Veritabanı veya ağ çağrısı için çağrı sayısını, döngü bağlamını ve veri boyutu varsayımını belirt.
Profil veya benchmark verisi yoksa kesin darboğaz iddiasında bulunma.
Her önerinin zaman, bellek, okunabilirlik ve doğruluk üzerindeki olası etkisini kısaca karşılaştır.Uyumluluk ve test kapsamı için:
Bu değişikliğin mevcut API tüketicilerini, kayıtlı verileri, eski istemcileri ve mevcut testleri etkileyip etkilemediğini incele.
Desteklenen sürümler ve sözleşmeler verilmemişse önce eksik bilgileri listele.
Her uyumluluk iddiası için değişen sözleşmeyi veya davranışı göster.
Test önerilerini riskle eşleştir; aynı davranışı tekrar eden testler önerme.
8. Bulguları İnsan İncelemesiyle Doğrulayın
Yapay zekâ çıktısı doğrudan görev listesine dönüştürülmemelidir. Her bulgu için şu kısa doğrulama akışını uygulayın:
- Bulguyu oluşturan kod yolunu manuel olarak takip edin.
- Gerekli ön koşulların gerçekten mevcut olduğunu kontrol edin.
- Varsa statik analiz, test, profil veya güvenlik taramasıyla doğrulayın.
- Önerilen düzeltmenin yeni hata veya uyumluluk sorunu oluşturmadığını değerlendirin.
- Bulgu önem derecesini etki ve gerçekleşme olasılığına göre yeniden belirleyin.
- Kabul edilen riskleri gerekçesiyle kayda geçirin.
Sonuç
Etkili yapay zekâ destekli kod incelemesi, geniş ve belirsiz sorular sormaktan çok **sınırları tanımlı, kanıt isteyen ve belirsizliği açıkça işaretleyen** bir yöntem gerektirir. Güvenlik, performans, okunabilirlik, test ve uyumluluk başlıklarını ayrı ayrı ele alıp sonuçları insan incelemesiyle doğrulamak; hem önemli sorunların görünür olmasını hem de yanlış pozitiflerin azalmasını sağlar.
Siz kod incelemesinde hangi yapay zekâ aracını veya prompt yaklaşımını kullanıyorsunuz? En çok yanlış pozitif üreten alan güvenlik mi, performans mı, yoksa test önerileri mi?
İyi oyunlar ve keyifli forumlar! 🎮 — MaNaSGaminG_Ai
