Kural
Kaldır erişilemeyen ölü kod
Ulaşılamayan kod karışık kafa karıştırıcıdır, test edilemez,
ve olmamalıdır kaldırılmalıdır kaldırılmalıdır.
Desteklenen diller: 45+Giriş
Ulaşılamayan kod, kod tabanınızda mantık hatası olduğunu gösterir. Aşağıdaki koddan sonra gelen return veya fırlatmak Yürütülmek üzere yazılmış ancak hiçbir zaman çalışmayan ifadeler vardır. Her zaman yanlış olan koşullar, hiçbir zaman tetiklenmeyen doğrulama veya hata işleme işlemlerini gizler. Kontrol akışı nedeniyle mantığın asla ulaşamadığı dallar, yürütülemeyen işlevler içerir. Ulaşılamayan kod bulduğunuzda, kodunuzun amaçlandığı şekilde çalışmadığı bir hata bulmuş olursunuz.
Neden önemli?
Güvenlik açıkları: Ulaşılamayan güvenlik kontrolleri uygulamanızı korumaz. Kimlik doğrulama, yetki verme veya girdi doğrulama işlemleri bir return Açıklamanıza göre, kodunuz güvenli görünüyor ama aslında değil. Saldırganlar, güvenlik önlemleri varmış gibi görünen ancak aslında bu önlemleri atlayan işlevlerden yararlanabilir. Kod incelemesi sırasında bu güvenlik açıkları gözden kaçabilir; çünkü güvenlik mantığı kod tabanında mevcut olsa da hiçbir zaman çalıştırılmamaktadır.
Üretim ortamındaki mantık hataları: Ölü kod, fonksiyonunuzun düşündüğünüz mantığı uygulamadığı anlamına gelir. Hiç çalıştırılmayan doğrulama işlemleri, geçersiz verilerin geçmesine izin verir. Ulaşılamayan hata işleme, hataların yakalanmadan yayılmasına neden olur. Atlanan iş kuralları, hatalı sonuçlara yol açar. Kod doğru görünse de amaçlandığından farklı davranır.Test eksiklikleri: Ulaşılamayan kod test edilemez. Kritik kodlara ulaşılamamasına rağmen test paketiniz başarılı çıkıyorsa, bu, söz konusu yolları kapsayan testlerinizin olmadığı anlamına gelir. Ulaşılamayan kod, önemli mantığın mevcut olduğu ancak çalışıp çalışmadığını doğrulayan testlerin bulunmadığı test kapsamındaki boşlukları ortaya çıkarır.
Paket boyutuna etkisi: Ulaşılamayan kod, JavaScript paketinizde gereksiz yük olarak kullanıcılara yine de gönderilir. Kullanıcılar, hiçbir zaman çalıştırılmayacak kodu indirip çözümler; ancak bu durum, gereksiz kodun işaret ettiği mantık hatalarına kıyasla ikincil öneme sahiptir.
Kod örnekleri
❌ Uygun değil:
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ış: İşlev, bu mantığa ulaşmadan geri döndüğü için dolandırıcılık tespit mantığı hiçbir zaman çalışmaz. Tutar kontrolünden sonra gerçekleştirilmesi gereken şüpheli faaliyet kaydı da hiçbir zaman yürütülmez. Bu işlev, güvenlik önlemlerine sahip gibi görünse de aslında tüm transferleri dolandırıcılık kontrolü yapmadan işler.
✅ Uygunluk:
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' };
}
Bunun önemi: Tüm güvenlik kontrolleri, transfer işlemi gerçekleştirilmeden önce uygulanır. Her işlemde dolandırıcılık tespiti yapılır. Şüpheli faaliyetler kayıt altına alınır. Bu işlev, sahip olduğu görünen güvenlik mantığını uygular.
Sonuç
Ulaşılamayan kod, amaçlanan işlevselliğin hiçbir zaman yürütülmediği mantık hatalarına işaret eder. CI boru hattınızdaki statik analiz araçlarıyla bunu tespit edin ve bunu sadece kod temizliği olarak değil, kritik bir sorun olarak ele alın. Ulaşılamayan kod keşfettiğinizde, bunun neden var olduğunu ve hangi mantığın çalışması gerekirken çalışmadığını araştırın.

