2009-06-15 22 views
13

Linux için mevcut statik kod analiz araçları üzerinde herhangi bir karşılaştırma yapılmış mı?Linux'ta statik kod analiz araçlarının karşılaştırması?

  • Lintian, Seyrek
  • ,
  • Atel,
  • rats, -Duvar seçeneği kullanarak
  • : Aşağıdaki araçlardan güçlü ve zayıf yanları nelerdir.

Bu araçlardan sadece birini kullanmanın yeterli olduğunu düşünür müsünüz?

Öneriler aramıyorum (bunların çoğunu bulabilirim) ancak mevcut araçlar arasında doğrudan karşılaştırmalar yapıyorum.

cevap

6

Elbette wikipedia list var. Bu liste, bir liste ve bir karşılaştırma değil, sayfadaki the links'dan biri sorunuzu en azından kısmen yanıtlıyor gibi görünüyor ve (çok kısaca) listelediğiniz birkaç programdan bahsediyor.

4

Her bir geliştirici için -Wall kullanımı elbette olmalıdır. Ayrıca, ek olarak -Wextra kullanmak iyi bir fikir olabilir.

Atel uygulamanızda ancak çoğu durumda diğer potansiyel zayıflıkları bulabilirsiniz (!) Gerçekten üzerinden/gibi ek açıklamaları eklemek için ne uyarı ve çoğu kez birlikte ne anlama geldiğini atel anlamak olsun diye sahte uyarıları yazdırır/veya/kullanılmamış/kodunuzda splint size bağlı değil. Atel ile, sizin için önemli olmayan uyarıları filtrelemelisiniz, aksi halde çok sayıda mesajı analiz etmek ve kaydırmak için çok fazla zaman harcadınız.

Bu araçların yalnızca statik kod denetimi yaptığını unutmayın. Çalışma zamanı bellek sızıntılarını bulmak için valgrind kullanmalısınız.

+0

Evet, Windows dünyasında statik denetleyiciler konusunda deneyimim var, bu yüzden yanlış pozitif sorunların farkındayım. – Makis

3

Birkaç kez atel kullandım ve çok ayrıntılı buldum: I , uyarıların çoğunu devre dışı bıraktı. Kodunuzu doğru bir şekilde not eklediyseniz bu aracın ilginç sonuçlar sağlayabileceğini düşünüyorum. kodlu ek açıklama olmaksızın, bu araç çok yardımcı olmaz.

Bazen seyrek kullanır ve değerli bir araç olarak görürüm. , "cgcc" adı verilen gcc etrafında bir sarıcı sağlar. Sonuç olarak, birçok kaynak dosyası (export CC=cgcc ve voilà) içeriyor olsa bile, bir programda seyrek seyretmek kolaydır. Bu program, Kernel kaynak kodunu analiz ediyorsanız en iyi sonucu verir.

Bir sidenote olarak, ben de düzenli olarak pmccabe kullanın. pmccabe statik analizörü değildir: Cyclomatic karmaşıklığı hesaplar. Programınızdaki en karmaşık işlevleri bulmanıza yardımcı olabilir. Bu fonksiyonlar, hata eğilimli ve test edilmesi zor olan 'dur.