Kural
Erişilemeyen ölü kodu kaldırın
Erişilemeyen kod kafa karıştırıcıdır, test
edilemezdir ve kaldırılmalıdır.
Desteklenen diller: 45+Giriş
Erişilemeyen kod, kod tabanınızdaki bozuk mantığın işaretidir. Şuradan sonra gelen kodlar return veya throw deyimleri çalıştırılmak üzere yazılmış ancak asla çalışmamaktadır. Her zaman false veren koşullar, asla tetiklenmeyen doğrulama veya hata yönetimini gizler. Kontrol akışı nedeniyle mantığın asla ulaşamadığı dallar, çalıştırılamayan işlevsellik barındırır. Erişilemeyen kod bulduğunuzda, kodunuzun amaçlandığı gibi çalışmadığı bir hata bulmuş olursunuz.
Neden önemli?
Güvenlik açıkları: Erişilemeyen güvenlik kontrolleri uygulamanızı korumaz. Kimlik doğrulama (authentication), yetkilendirme (authorization) veya girdi doğrulama (input validation) bir return deyiminden sonra yer alıyorsa kodunuz güvenli görünür ancak güvenli değildir. Saldırganlar, güvenlik önlemlerine sahip gibi görünen ancak aslında bunları by-pass eden fonksiyonları istismar edebilir. Kod incelemesi (code review), güvenlik mantığı kod tabanında mevcut olduğu ancak hiçbir zaman çalıştırılmadığı için bu açıkları gözden kaçırabilir.
Prod ortamındaki mantık hataları: Ölü kod, fonksiyonunuzun düşündüğünüz mantığı uygulamadığı anlamına gelir. Asla çalışmayan doğrulama, geçersiz verilerin geçmesine izin verir. Erişilemeyen hata yönetimi, hataların yakalanmadan yayılmasına neden olur. Atlanan iş kuralları yanlış sonuçlar üretir. Kod doğru görünür ancak amaçlandığından farklı davranır. Test boşlukları: Erişilemeyen kod test edilemez. Kritik kod erişilemez durumda olmasına rağmen test paketiniz başarılı oluyorsa bu, söz konusu yolları kapsayan testleriniz olmadığını gösterir. Erişilemeyen kod, önemli mantığın bulunduğu ancak çalıştırıldığını doğrulayan testlerin bulunmadığı test kapsamındaki boşlukları ortaya çıkarır.
Bundle boyutu etkisi: Erişilemeyen kod, JavaScript bundle'ınızda ölü ağırlık olarak kullanıcılara gönderilmeye devam eder. Kullanıcılar asla çalışmayan kodu indirir ve ayrıştırır, ancak bu, ölü kodun işaret ettiği mantık hatalarının ikincil bir etkisidir.
Kod örnekleri
❌ Kural dışı:
function transferFunds(fromAccount, toAccount, amount) {
if (!fromAccount || !toAccount) {
return { success: false, error: 'Invalid accounts' };
}
if (amount <= 0) {
return { success: false, error: 'Invalid amount' };
logSuspiciousActivity(fromAccount, amount);
}
const balance = getBalance(fromAccount);
if (balance >= amount) {
deductFunds(fromAccount, amount);
addFunds(toAccount, amount);
return { success: true };
}
return { success: false, error: 'Insufficient funds' };
// Check for fraud patterns
if (isHighRiskTransaction(fromAccount, toAccount, amount)) {
notifyFraudTeam(fromAccount, toAccount, amount);
return { success: false, error: 'Transaction blocked' };
}
}
Neden yanlış: Dolandırıcılık tespiti mantığı asla çalışmaz çünkü fonksiyon bu noktaya ulaşmadan önce return eder. Tutar kontrolünden sonraki şüpheli etkinlik günlüğü de asla yürütülmez. Bu fonksiyon güvenlik önlemlerine sahip gibi görünüyor ancak aslında tüm transferleri dolandırıcılık kontrolü olmadan işliyor.
✅ Kurallara uygun:
function transferFunds(fromAccount, toAccount, amount) {
if (!fromAccount || !toAccount) {
return { success: false, error: 'Invalid accounts' };
}
if (amount <= 0) {
logSuspiciousActivity(fromAccount, amount);
return { success: false, error: 'Invalid amount' };
}
if (isHighRiskTransaction(fromAccount, toAccount, amount)) {
notifyFraudTeam(fromAccount, toAccount, amount);
return { success: false, error: 'Transaction blocked' };
}
const balance = getBalance(fromAccount);
if (balance >= amount) {
deductFunds(fromAccount, amount);
addFunds(toAccount, amount);
return { success: true };
}
return { success: false, error: 'Insufficient funds' };
}
Neden önemli: Tüm güvenlik kontrolleri transfer işlenmeden önce çalışır. Dolandırıcılık tespiti her işlemde çalışır. Şüpheli etkinlikler günlüğe kaydedilir. Fonksiyon sahip gibi göründüğü güvenlik mantığını uygular.
Sonuç
Erişilemeyen kod; amaçlanan işlevselliğin asla yürütülmediği mantık hatalarını gösterir. CI hattınızdaki statik analiz araçlarıyla bunu tespit edin ve yalnızca bir kod temizliği olarak değil, kritik bir sorun olarak ele alının. Erişilemeyen kod keşfettiğinizde, bunun neden var olduğunu ve hangi mantığın çalışması gerekirken çalışmadığını araştırın.

