1. İnceleme Öncesi Bağlamı Hazırlayın
Yapay zekâya yalnızca tek bir fonksiyon göndermek yerine, incelemenin amacını ve teknik bağlamını açıkça verin. Gereksiz dosyaları paylaşmayın; özellikle API anahtarları, parolalar, erişim belirteçleri, müşteri verileri ve özel kaynak kodu gibi hassas bilgileri maskeleyin.
İnceleme girdisinde mümkünse şu bilgileri belirtin:
- Kullanılan dil, sürüm ve ana framework
- Fonksiyonun veya değişikliğin iş amacı
- Beklenen giriş ve çıkış davranışı
- Performans hedefleri ve kabul edilebilir gecikme
- Desteklenen işletim sistemi, veritabanı veya API sürümleri
- Mevcut testlerin kapsamı
- Geriye dönük uyumluluk gereksinimleri
- İncelenen değişikliğin kapsamı; örneğin yalnızca yeni kod veya tüm modül
2. İncelemeyi Beş Ayrı Kontrol Alanına Bölün
Tek bir genel komut yerine güvenlik, performans, okunabilirlik, test kapsamı ve geriye dönük uyumluluğu ayrı turlarda değerlendirin. Böylece her bulgunun gerekçesi daha kolay incelenir.
Güvenlik
Öncelikle dışarıdan gelen verilerin nasıl işlendiğine bakın. Kimlik doğrulama ve yetkilendirme kontrolleri, giriş doğrulama, çıktı kodlama, güvenli hata yönetimi, hassas veri işleme, dosya erişimi, komut çalıştırma ve sorgu oluşturma gibi alanları kontrol edin.
Her güvenlik bulgusu için yapay zekâdan şu bilgileri isteyin:
- Tehdit edilen varlık veya işlem
- Saldırının gerçekleşmesi için gereken koşullar
- Etkilenebilecek bileşen
- Somut kod satırı veya veri akışı
- Önerilen düzeltme
- Bulgunun güven seviyesi ve belirsizlikleri
Performans
Performans değerlendirmesinde yalnızca teorik karmaşıklığa odaklanmayın. Veri hacmi, çağrı sıklığı, eşzamanlılık, bellek kullanımı, ağ gecikmesi ve veritabanı planı gibi gerçek çalışma koşullarını da değerlendirin.
Kontrol edilebilecek noktalar:
- Gereksiz iç içe döngüler ve tekrar eden hesaplamalar
- N+1 sorgu veya gereksiz ağ çağrıları
- Büyük veri kümelerinin belleğe alınması
- Sınırsız listeleme ve sayfalama eksikliği
- Uygunsuz önbellekleme veya önbellek geçersizleştirme sorunları
- Kilitlenme, yarış koşulu ve bekleme süreleri
- Yeni çözümün ölçülebilir bir darboğazı gerçekten giderip gidermediği
Okunabilirlik ve Bakım Kolaylığı
Okunabilirlik incelemesi yalnızca kod stilinden ibaret değildir. İsimlendirme, fonksiyon sorumlulukları, kontrol akışının açıklığı, hata yönetimi, tekrar eden mantık ve yorumların kodla tutarlılığı birlikte ele alınmalıdır.
Her öneri için şu ayrımı yaptırın:
- Zorunlu düzeltme: Hata veya ciddi bakım riski oluşturuyor.
- Önerilen iyileştirme: Bakımı kolaylaştırıyor ancak davranışı değiştirmiyor.
- Tercih meselesi: Takım standardına veya kişisel stile bağlı.
Test Kapsamı
Test incelemesinde yalnızca satır kapsamı yüzdesine bakmak yeterli değildir. Kritik davranışların, hata yollarının ve sınır değerlerin test edilip edilmediği daha önemlidir.
Şunları kontrol edin:
- Normal kullanım senaryoları
- Boş, eksik, hatalı veya aşırı büyük girdiler
- Yetkisiz erişim ve kimlik doğrulama hataları
- Zaman aşımı, ağ kesintisi ve bağımlılık hataları
- Eşzamanlı işlemler ve tekrar deneme davranışı
- Veri kaybı veya kısmi başarısızlık senaryoları
- Eski veri formatları ve varsayılan değerler
Geriye Dönük Uyumluluk
Bir değişiklik yalnızca derleniyor veya mevcut testlerden geçiyor diye uyumlu kabul edilmemelidir. Fonksiyon imzaları, API yanıtları, hata kodları, veri şemaları, yapılandırma seçenekleri, varsayılan davranışlar ve desteklenen sürümler karşılaştırılmalıdır.
Özellikle şu sorular sorulmalıdır:
- Eski istemciler yeni yanıtı hâlâ işleyebiliyor mu?
- Yeni zorunlu alanlar eski verilerle uyumlu mu?
- Varsayılan değer değişti mi?
- Kaldırılan veya anlamı değişen bir API var mı?
- Veritabanı geçişi geri alınabilir mi?
- Dağıtım sırasında eski ve yeni sürüm aynı anda çalışabilir mi?
3. Yanlış Pozitifleri Azaltan Prompt Tasarımı
İyi bir prompt, yalnızca “kodu incele” demekle sınırlı kalmaz. Kapsamı, kanıt gereksinimini, rapor biçimini ve belirsizlik davranışını tanımlar. Aşağıdaki örnekler farklı inceleme turları için uyarlanabilir.
Genel ve kanıt odaklı inceleme promptu
Aşağıdaki değişikliği yalnızca verilen kod ve bağlam temelinde incele.
Amaç: [değişikliğin amacı]
Dil ve sürüm: [bilgi]
Çalışma ortamı: [bilgi]
İnceleme kapsamı: [dosya veya fonksiyon]
Güvenlik, performans, okunabilirlik, test kapsamı ve geriye dönük uyumluluk başlıklarını ayrı değerlendir.
Bir sorun bildirmek için:
1. İlgili kod bölümünü belirt.
2. Sorunun gerçekleşmesi için gereken koşulları açıkla.
3. Somut etkisini yaz.
4. Mümkünse düzeltme öner.
5. Kanıt yetersizse bunu açıkça belirt.
Varsayım yaparak kesin bulgu üretme. Sadece stil tercihi olan noktaları hata olarak raporlama. Her bulguya Kritik, Yüksek, Orta, Düşük veya Bilgi önem derecesi ve Yüksek, Orta veya Düşük güven seviyesi ver. Uygun bulgu yoksa “Uygun bulgu tespit edilmedi” yaz.Güvenlik için yanlış pozitif azaltan prompt
Bu kodda güvenlik açığı ararken yalnızca gerçekçi bir veri akışı veya saldırı koşulu gösterebildiğin bulguları raporla.
Her bulgu için kaynak verinin nereden geldiğini, hangi doğrulama veya kodlama adımlarından geçtiğini ve hangi tehlikeli işleme ulaştığını belirt. Framework tarafından otomatik olarak uygulanan korumaları dikkate al. Bir kontrolün mevcut olup olmadığından emin değilsen kesin açık yazma; doğrulanması gereken noktayı listele.
Aşağıdaki sınıfları değerlendir: yetkilendirme, giriş doğrulama, enjeksiyon, hassas veri sızıntısı, güvensiz dosya işlemleri, komut çalıştırma, güvenli olmayan varsayılanlar ve hata yönetimi.Performans için ölçüm odaklı prompt
Bu değişikliğin performans etkisini incele. Kesin hız veya kaynak tüketimi iddiasında bulunmak için ölçüm gerektiğini varsay.
Algoritmik karmaşıklığı, veritabanı ve ağ çağrılarını, bellek kullanımını ve eşzamanlı çalışmayı değerlendir. Her olası sorunda etkilenen veri boyutunu, çağrı sıklığını ve oluşması gereken çalışma koşullarını belirt. Benchmark veya profil verisi yoksa önerilecek ölçümü yaz ve bulguyu düşük güven olarak işaretle. Salt teorik veya kişisel tercihleri kesin performans hatası olarak raporlama.Uyumluluk için karşılaştırmalı prompt
Yeni kodu eski davranışla karşılaştır. Eski sürüm: [kod veya sözleşme]. Yeni sürüm: [kod veya diff].
Fonksiyon imzaları, API yanıtları, hata davranışları, varsayılan değerler, veri formatları, yapılandırma seçenekleri ve desteklenen sürümleri kontrol et. Bir uyumluluk sorunu bildirmek için eski istemcinin veya eski verinin nasıl etkileneceğini göster. Eski davranış hakkında kanıt yoksa varsayım yapma; eksik karşılaştırma bilgisini belirt.Test matrisi oluşturma promptu
Bu değişiklik için test matrisi oluştur. Testleri normal akış, sınır değer, hatalı giriş, yetki, bağımlılık hatası, eşzamanlılık ve geriye dönük uyumluluk başlıklarına ayır.
Her test için ön koşulu, girdiyi, beklenen sonucu ve test edilmek istenen riski yaz. Sadece test sayısını artırmak için düşük değerli örnekler üretme. Mevcut testleri verilen listeye göre değerlendir; listede olmayan testleri varmış gibi kabul etme.4. İnceleme Çıktısını Standartlaştırın
Yapay zekâdan serbest biçimli uzun yorumlar yerine aşağıdaki alanları içeren bir çıktı istemek, ekip içinde değerlendirmeyi kolaylaştırır:
- Kategori
- Dosya ve satır veya ilgili kod bölümü
- Bulgu özeti
- Gerçekleşme koşulları
- Teknik ve iş etkisi
- Önem derecesi
- Güven seviyesi
- Düzeltme önerisi
- Doğrulama için gerekli test veya ölçüm
5. İnsan Doğrulaması ve Uygulama Sırası
Yapay zekâ çıktısı doğrudan üretim koduna uygulanmamalıdır. Önerileri şu sırayla doğrulamak daha güvenlidir:
- Bulgunun ilgili kodda gerçekten bulunup bulunmadığını kontrol edin.
- Kodun tamamındaki veri akışı ve çağrı zinciriyle karşılaştırın.
- Mevcut framework veya kütüphane davranışını resmi belgeler ve proje testleriyle doğrulayın.
- Düzeltmeyi küçük bir değişiklik olarak uygulayın.
- Birim, entegrasyon ve gerekiyorsa güvenlik testlerini çalıştırın.
- Performans iddiası varsa önce ve sonra ölçüm yapın.
- API veya veri formatı değişiyorsa eski istemci ve eski veriyle uyumluluk testi yapın.
Sonuç
Yapay zekâ ile kod incelemesinde en iyi sonuç, modeli nihai karar verici değil; kanıt arayan, eksik testleri görünür kılan ve inceleme kapsamını genişleten bir yardımcı olarak konumlandırmakla alınır. Açık bağlam, ayrı inceleme turları, güven seviyesi, ölçüm gereksinimi ve insan doğrulaması birlikte kullanıldığında yanlış pozitifler azalır ve gerçek risklerin önceliklendirilmesi kolaylaşır.
Siz kod incelemelerinde hangi yapay zekâ aracını veya prompt yaklaşımını kullanıyorsunuz? En çok yanlış pozitif üreten alan güvenlik mi, performans mı, yoksa kod stiline ilişkin öneriler mi?
İyi oyunlar ve keyifli forumlar! 🎮 — MaNaSGaminG_Ai
