Claude
Önem Derecelendirmeli Kapsamlı Kod İncelemesi (Code Review)
Pull request veya kod parçanızı; hata, güvenlik, performans ve okunabilirlik açısından önem derecesine göre sıralanmış, her bulgusu gerekçeli ve düzeltme önerili kıdemli bir geliştirici gözüyle inceletin.
Prompt
Sen titiz ama yapıcı bir kıdemli yazılım mühendisisin. Kod incelemesinde önce doğruluk ve güvenlik, sonra bakım kolaylığına bakarsın; zevk meselelerini dayatmazsın.
Dil / framework: [TEKNOLOJI]
Bu kod ne yapıyor ve hangi bağlamda çalışıyor: [BAGLAM]
İncelenecek kod veya diff:
```
[KOD]
```
İnceleme:
1. Özet: Kodun genel durumu tek paragrafta; birleştirilmeye hazır mı?
2. Bulgular: Her bulgu için
- Önem: Kritik (hata / güvenlik açığı) · Yüksek (olası hata, performans) · Orta (bakım, okunabilirlik) · Düşük (öneri)
- Konum (fonksiyon / satır)
- Sorun ve somut bir senaryo: Hangi girdiyle ne yanlış gider?
- Önerilen düzeltme (kısa kod parçası)
Bulguları önem sırasına göre listele.
3. Güvenlik kontrolü: Girdi doğrulama, yetkilendirme, SQL / komut enjeksiyonu, XSS, gizli bilgi sızıntısı.
4. Test: Bu değişiklik için eksik olan en önemli 3 test senaryosu.
5. İyi yapılanlar: Korunması gereken 1-2 güzel karar.
Kurallar: Emin olmadığın bulguyu "doğrulanmalı" diye işaretle. Kodun tamamını yeniden yazma. Sadece stil tercihi olan konuları "Düşük" seviyede tut.
TEKNOLOJI
BAGLAM
KOD
Örnek çıktı
1. Özet: Uç nokta çalışıyor ancak kritik bir SQL enjeksiyonu ve yetkilendirme açığı var; bu hâliyle birleştirilmemeli.
2. Bulgular
[Kritik] SQL enjeksiyonu — satır 2
Sorun: req.query.id doğrudan sorguya ekleniyor. "?id=1 OR 1=1" isteği tüm kullanıcıların siparişlerini döndürür.
Düzeltme:
db.query('SELECT id, total, status, created_at FROM orders WHERE user_id = $1', [userId])
[Kritik] Yetkilendirme eksik
Sorun: Kullanıcı kimliği sorgu parametresinden alınıyor; herkes başkasının siparişlerini görebilir.
Düzeltme: userId'yi oturum / token'dan alın (req.user.id).
[Yüksek] Sayfalama yok — Büyük hesaplarda binlerce satır tek istekte döner...
4. Eksik testler: Başka kullanıcının kimliğiyle istek → 403; enjeksiyon denemesi → 400; boş sipariş listesi → 200 ve boş dizi.
5. İyi yapılanlar: async/await kullanımı tutarlı ve okunaklı.
2. Bulgular
[Kritik] SQL enjeksiyonu — satır 2
Sorun: req.query.id doğrudan sorguya ekleniyor. "?id=1 OR 1=1" isteği tüm kullanıcıların siparişlerini döndürür.
Düzeltme:
db.query('SELECT id, total, status, created_at FROM orders WHERE user_id = $1', [userId])
[Kritik] Yetkilendirme eksik
Sorun: Kullanıcı kimliği sorgu parametresinden alınıyor; herkes başkasının siparişlerini görebilir.
Düzeltme: userId'yi oturum / token'dan alın (req.user.id).
[Yüksek] Sayfalama yok — Büyük hesaplarda binlerce satır tek istekte döner...
4. Eksik testler: Başka kullanıcının kimliğiyle istek → 403; enjeksiyon denemesi → 400; boş sipariş listesi → 200 ve boş dizi.
5. İyi yapılanlar: async/await kullanımı tutarlı ve okunaklı.
İleri SeviyeKurumsal
Yorumlar (0)
Yorum yapmak için giriş yapın veya kayıt olun.
Henüz yorum yok
Promptu denediyseniz deneyiminizi veya geliştirme önerinizi paylaşın.
Yorum yapmak için giriş yap