Yapay Zekâ ile Kod İncelemesi: Güvenlik, Performans ve Okunabilirlik İçin Prompt Stratejileri
Giriş: Neden Yapay Zekâ ile Kod İncelemesi?
Yapay zekâ araçları (örneğin GitHub Copilot, ChatGPT, Codeium) kod inceleme sürecini hızlandırabilir; ancak doğru prompt yazılmazsa yanlış pozitifler, güvenlik açıklarının gözden kaçması veya performans iyileştirmelerinin atlanması gibi sorunlar ortaya çıkar. Bu yazıda, güvenlik, performans, okunabilirlik, test kapsamı ve geriye dönük uyumluluk açısından etkili bir inceleme için izlenecek yöntemi ve yanlış pozitifleri azaltacak prompt örneklerini ele alacağız.
1. Güvenlik Odaklı İnceleme
Güvenlik açıkları genellikle girdi doğrulama, yetkilendirme, şifreleme ve bağımlılık yönetiminde ortaya çıkar. Yapay zekâya aşağıdaki gibi spesifik promptlar verilmelidir:
"Aşağıdaki PHP kodunu SQL enjeksiyonu, XSS ve CSRF açıklarına karşı incele. Her potansiyel güvenlik sorununu satır numarasıyla belirt ve düzeltme önerisi sun. Yanlış pozitifleri önlemek için yalnızca gerçekten risk oluşturan noktaları raporla."
<?php
$id = $_GET['id'];
$query = "SELECT * FROM users WHERE id = $id";
$result = mysqli_query($conn, $query);
?>
Bu prompt sayesinde AI, yalnızca belirgin güvenlik sorunlarına odaklanır ve stil veya performansla ilgili yanlış uyarılar vermez.
2. Performans İncelemesi
Performans iyileştirmeleri için AI'ya kodun hangi bölümünün darboğaz oluşturabileceğini sorun. Örneğin:
"Bu Python fonksiyonunu zaman karmaşıklığı ve bellek kullanımı açısından değerlendir. Döngüler, gereksiz kopyalama veya veritabanı sorguları gibi performans sorunlarını belirt. Yalnızca önemli etkisi olan iyileştirmeleri öner, mikro-optimizasyonları atla."
def get_user_data(user_ids):
result = []
for uid in user_ids:
user = db.query(f"SELECT * FROM users WHERE id={uid}")
result.append(user)
return result
Burada AI, N+1 sorgu problemini tespit eder ve toplu sorgu önerir.
3. Okunabilirlik ve Bakım
Okunabilirlik için AI'dan kodun SOLID prensiplerine uygunluğunu, değişken isimlendirmelerini ve yorum kalitesini değerlendirmesini isteyin:
"Kodu okunabilirlik ve bakım açısından incele. Gereksiz karmaşıklık, tutarsız isimlendirme, eksik yorumlar veya uzun fonksiyonlar varsa belirt. Önerilerini somut örneklerle destekle."4. Test Kapsamı ve Geriye Dönük Uyumluluk
Test kapsamı için AI'ya hangi senaryoların test edilmediğini sorun:
"Bu değişiklik için birim testleri yazmam gerekiyor. Hangi sınır durumları, hata koşulları ve kenar durumlar test kapsamına alınmalı? Ayrıca, mevcut API'yi bozmamak için hangi noktalara dikkat etmeliyim?"Geriye dönük uyumluluk için:
"Bu kod eski sürümlerle çalışacak mı? Eski API çağrıları, veritabanı şeması veya bağımlılıklarla uyumsuzluk var mı? Değişikliklerin mevcut kullanıcıları etkilememesi için hangi önlemler alınmalı?"5. Yanlış Pozitifleri Azaltma Stratejileri
Yanlış pozitifleri azaltmak için promptlarda şu unsurlara dikkat edin:
- Kesin talimatlar verin: "Yalnızca kritik güvenlik açıklarını raporla" gibi.
- Bağlam sağlayın: Kodun hangi ortamda çalıştığını belirtin (örneğin, internal araç, yüksek trafikli site).
- Önceliklendirme isteyin: "Önem derecesine göre sırala" veya "En önemli 3 sorunu belirt".
- Örneklerle yönlendirin: İstediğiniz çıktının formatını gösterin.
| Prompt Bileşeni | Örnek |
|---|---|
| Kapsam | "Sadece güvenlik ve performans konularına odaklan, stil kurallarını atla." |
| Öncelik | "Kritik, yüksek, orta, düşük olarak sınıflandır." |
| Çıktı formatı | "Her sorunu [satır_no] - [seviye] - [açıklama] - [öneri] şeklinde listele." |
Yapay zekâ ile kod incelemesi, doğru promptlarla hem zaman kazandırır hem de kaliteyi artırır. Güvenlik, performans, okunabilirlik, test kapsamı ve geriye dönük uyumluluk için ayrı ayrı promptlar hazırlamak, yanlış pozitifleri en aza indirir. Unutmayın: AI bir araçtır, nihai karar sizindir. İnceleme sonuçlarını her zaman insan gözüyle doğrulayın.