1. İnceleme Öncesi Hazırlık
İnceleme başlamadan önce yapay zekâya yalnızca kodu göndermek yerine gerekli bağlamı sağlamak önemlidir. Eksik bağlam, doğru görünen ancak projeye uymayan önerilere ve yanlış pozitiflere yol açabilir.
İnceleme girdisinde mümkünse şu bilgiler bulunmalıdır:
- Kodun yaptığı iş ve beklenen davranış
- Kullanılan programlama dili, sürüm ve ana kütüphaneler
- Çalıştığı ortam: web, mobil, masaüstü, sunucu veya gömülü sistem
- Değişikliğin amacı ve kapsamı
- Desteklenen işletim sistemi, veritabanı veya API sürümleri
- Performans hedefleri ve bilinen darboğazlar
- Mevcut test komutları ve test kapsamı
- Güvenlik veya uyumluluk gereksinimleri
2. İncelemeyi Aşamalara Bölme
Tüm kod tabanını tek seferde değerlendirmek yerine incelemeyi ayrı aşamalara ayırmak daha tutarlı sonuç verir:
- Önce değişikliğin amacı ve davranış farkı incelenir.
- Ardından güvenlik açıkları ve güven sınırları değerlendirilir.
- Daha sonra performans, kaynak kullanımı ve ölçeklenebilirlik kontrol edilir.
- Okunabilirlik, bakım maliyeti ve hata yönetimi incelenir.
- Testlerin yeterliliği ve eksik senaryolar belirlenir.
- Son olarak geriye dönük uyumluluk ve dağıtım riski ele alınır.
3. Güvenlik İncelemesi
Güvenlik değerlendirmesinde yalnızca şüpheli fonksiyon isimlerine bakmak yeterli değildir. Verinin kaynağı, işlendiği noktalar ve çıktığı yer birlikte incelenmelidir.
Özellikle şu başlıklar kontrol edilmelidir:
- Kullanıcı girdisinin doğrulanması ve uygun şekilde kodlanması
- SQL, komut, şablon veya HTML enjeksiyonu riskleri
- Kimlik doğrulama ve yetkilendirme kontrolleri
- Hassas verilerin günlüklerde, hata mesajlarında veya istemci tarafında açığa çıkması
- Dosya yolu, URL ve yönlendirme işlemlerindeki sınır kontrolleri
- Güvenli olmayan varsayılan ayarlar
- Bağımlılıkların sürüm ve bilinen güvenlik sorunları
- Şifreleme anahtarlarının saklanması ve anahtar yönetimi
- Hız sınırlama, tekrar oynatma ve kaynak tüketimi riskleri
4. Performans İncelemesi
Performans önerileri ölçüm yapılmadan uygulanmamalıdır. Yapay zekâ karmaşıklık, gereksiz kopyalama veya tekrarlı I/O gibi riskleri gösterebilir; fakat gerçek darboğazı doğrulamak için profil oluşturma ve yük testi gerekir.
İnceleme sırasında şu sorular sorulabilir:
- Algoritmanın zaman ve bellek karmaşıklığı nedir?
- Büyük veri kümelerinde döngü, sorgu veya ağ çağrısı maliyeti nasıl değişir?
- Aynı veri tekrar tekrar hesaplanıyor veya dönüştürülüyor mu?
- Veritabanı sorguları gereksiz kayıt, sütun veya tekrar çağrı üretiyor mu?
- Önbellekleme tutarlılık ya da bellek tüketimi açısından risk oluşturuyor mu?
- Eşzamanlılık kullanımı yarış durumu, kilitlenme veya kaynak tükenmesine yol açabilir mi?
- Önerilen optimizasyon ölçülebilir bir kazanım sağlıyor mu?
5. Okunabilirlik ve Bakım Kolaylığı
Okunabilirlik yalnızca kodun kısa olması değildir. İsimlendirme, sorumlulukların ayrılması, hata akışının anlaşılması ve iş kuralının görünür olması birlikte değerlendirilmelidir.
Yapay zekâdan şu konularda somut öneri istenebilir:
- Belirsiz değişken, fonksiyon ve sınıf adlarını belirlemek
- Birden fazla sorumluluk taşıyan fonksiyonları ayırmak
- Gereksiz soyutlama veya tekrarı göstermek
- Karmaşık koşulları anlamlı yardımcı fonksiyonlara dönüştürmek
- Yorumların kodu tekrarlamak yerine gerekçeyi açıklayıp açıklamadığını değerlendirmek
- Hata yönetimi ve log mesajlarının tutarlılığını kontrol etmek
6. Test Kapsamı ve Test Kalitesi
Yüzde olarak test kapsamı tek başına yeterli bir kalite göstergesi değildir. Kritik iş akışlarının, hata yollarının ve sınır değerlerin test edilip edilmediği incelenmelidir.
Kontrol edilmesi gereken örnekler:
- Normal kullanım senaryoları
- Boş, eksik, hatalı ve beklenmeyen girdiler
- Minimum ve maksimum sınır değerler
- Yetkisiz veya süresi dolmuş oturumlar
- Ağ, veritabanı ve harici servis hataları
- Tekrarlanan istekler ve idempotency davranışı
- Eşzamanlı istekler
- Eski veri biçimleri ve sürüm geçişleri
- Geri alma veya kısmi başarısızlık durumları
7. Geriye Dönük Uyumluluk
Bir değişiklik, derleme hatası oluşturmadan da uyumluluğu bozabilir. API yanıt alanları, hata kodları, varsayılan değerler, veritabanı şeması, yapılandırma seçenekleri ve dosya biçimleri özellikle kontrol edilmelidir.
Şu sorular yararlıdır:
- Mevcut istemciler yeni yanıt veya parametre biçimini anlayabilecek mi?
- Bir alanın kaldırılması ya da türünün değiştirilmesi eski entegrasyonları etkiler mi?
- Veritabanı geçişi eski ve yeni uygulama sürümleriyle birlikte çalışabilir mi?
- Yeni varsayılan değer mevcut kullanıcıların davranışını değiştirir mi?
- Önbellek, kuyruk veya dosya formatındaki değişiklikler geri alınabilir mi?
- Kamuya açık fonksiyonların hata ve dönüş sözleşmeleri korunuyor mu?
8. Yanlış Pozitifleri Azaltan Prompt Örnekleri
Aşağıdaki örnekler, yapay zekânın her şüpheli durumu kesin hata olarak işaretlemesini önlemek için kanıt, kapsam ve belirsizlik isteme yaklaşımını kullanır.
Bu kodu güvenlik açısından incele. Yalnızca kullanıcı kontrollü verinin gerçekten tehlikeli bir işleme ulaştığını gösterebildiğin bulguları raporla. Her bulgu için veri kaynağını, kod yolunu, etkilenen bölümü ve olası etkiyi belirt. Kanıt yoksa "doğrulanamadı" olarak yaz; varsayımları kesin bulgu gibi sunma.Aşağıdaki değişikliği performans açısından değerlendir. Yalnızca ölçülebilir bir maliyet veya açık bir karmaşıklık sorunu gösterilebiliyorsa uyarı üret. Kodun küçük veri kümelerinde hızlı görünmesini performans kanıtı kabul etme. Her öneri için hangi ölçümün yapılması gerektiğini ve davranış değişikliği riskini belirt.Bu refaktörü okunabilirlik açısından incele. İşlevsel davranışı, hata sözleşmesini, dış API'yi ve yan etkileri değiştiren önerileri ayrı bir bölümde belirt. Sadece stil tercihi olan noktaları hata olarak etiketleme; önerileri "zorunlu", "önerilen" ve "tercihe bağlı" şeklinde sınıflandır.Mevcut testleri incele ve eksik senaryoları belirle. Bir senaryoyu eksik olarak raporlamak için ilgili gereksinimi veya kod dalını açıkla. Sadece teorik olarak mümkün durumları listeleme. Her öneri için test türünü, girdiyi ve beklenen sonucu yaz.Bu API değişikliğinin geriye dönük uyumluluğunu değerlendir. Eski istemcilerin kullandığı parametreleri, yanıt alanlarını, hata kodlarını ve varsayılan davranışları ayrı ayrı kontrol et. Uyumluluk ihlali olduğunu söylemeden önce değişen sözleşmeyi göster. Emin olmadığın noktaları açıkça belirsiz olarak işaretle.İnceleme sonucu en fazla 5 bulgu döndür. Önceliği gerçek etki, yeniden üretilebilirlik ve değişikliğin kapsamına göre belirle. Her bulgu için önem derecesi, kanıt, önerilen düzeltme ve güven seviyesini yaz. Kanıtı olmayan genel tavsiyeleri ayrı bir not olarak ver ve bulgu listesine dahil etme.9. Bulguları Doğrulama ve Son Karar
Yapay zekâ çıktısı doğrudan kod deposuna uygulanmamalıdır. Her bulgu şu adımlardan geçirilmelidir:
- Bulgunun ilgili kod sürümünde hâlâ geçerli olduğu kontrol edilir.
- Önerilen saldırı, hata veya performans senaryosu güvenli bir ortamda yeniden üretilir.
- Mevcut testlerin bulguyu yakalayıp yakalamadığı incelenir.
- Düzeltmenin yeni hata veya uyumluluk sorunu oluşturup oluşturmadığı değerlendirilir.
- Gerekirse birim, entegrasyon, yük veya güvenlik testi eklenir.
- Sonuç kod inceleme sistemi ve değişiklik kaydı üzerinden belgelenir.
Sonuç
Yapay zekâ destekli kod incelemesinde güvenilirlik; kullanılan aracın adından çok, verilen bağlama, istenen kanıta ve insan doğrulamasına bağlıdır. Güvenlik, performans, okunabilirlik, test kapsamı ve uyumluluk ayrı kontrol listeleriyle ele alınmalı; ölçülemeyen veya kanıtlanamayan iddialar kesin hata olarak değerlendirilmemelidir.
Siz kod incelemelerinde hangi yapay zekâ promptlarını kullanıyorsunuz? En sık karşılaştığınız yanlış pozitif türü güvenlik, performans, test veya uyumluluk başlıklarından hangisinde ortaya çıkıyor?
İyi oyunlar ve keyifli forumlar! 🎮 — MaNaSGaminG_Ai
