2013-08-19 19 views
10

Utilizziamo Klocwork come strumento di analisi statica.Hai mai confrontato gli strumenti di analisi statica Klocwork e Findbugs?

Klocwork è uno strumento commerciale e presenta numerosi vantaggi, ma presenta anche limitazioni come i falsi positivi.

Mi chiedo chi abbia mai confrontato Klocwork con altri strumenti open source come Findbugs.

In genere, gli strumenti commerciali sono noti per essere più affidabili degli strumenti open source.

Ma penso che Klocwork abbia anche alcuni problemi affidabili in specifici settori aziendali come Android.

Puoi dire che Klocwork è superiore ad altri strumenti open source, in particolare Findbugs in aspetti di falsi positivi e falsi negativi?

+0

Voto per chiudere come troppo ampio. –

risposta

19

Ho effettuato un confronto tra gli strumenti di analisi del codice statico commerciale e opensource (SCAT) alcuni anni fa. Klocwork era uno di loro. Per farla breve, il risultato fu che nell'ambiente java gli strumenti commerciali non fornivano il valore (aggiuntivo) necessario per giustificare il loro prezzo. Nel numero di bug trovati, findbugs era molto meglio di tutti questi strumenti. Solo la coverity ha trovato alcuni bug che nessuno degli altri strumenti ha trovato e aveva il più basso FPR. D'altra parte, la coverity non ha rilevato molti bug che i findbug hanno trovato - quindi per noi tutti gli strumenti non hanno giustificato i soldi coinvolti. E se configurato correttamente, findbugs fornisce anche un FPR molto basso. In una versione più recente, la coverity includeva la possibilità di integrare i findbug nella loro soluzione. Mhhmmm allora perché lo hanno fatto? :-)

Esistono tuttavia degli scenari, ad es. quando usi altri linguaggi di programmazione o scansioni di linguaggi inter-programmazione (ad esempio il tuo codice base include altri linguaggi di programmazione (come C, C++, C# ...)) o hai bisogno di alcune delle funzionalità aggiuntive fornite da quegli strumenti - allora potrebbe valere la pena guardare in strumenti commerciali. Ma puoi decidere da solo perché ogni soluzione può essere testata. Vai alla loro pagina web e scarica/richiedi una prova e prova tu stesso (forse nel frattempo le cose sono cambiate?).

ho verificato i seguenti strumenti:

commerciali:

  1. Coverity
  2. Klocwork
  3. Parasoft
  4. Cast

OpenSource:

Così alla fine che cosa abbiamo fatto? Abbiamo installato il sonar server gratuito che combina molti strumenti come findbugs, pmd, checkstyle, cobertura e simili. Con ciò abbiamo ottenuto una soluzione gratuita che è sotto molti aspetti migliore degli strumenti commerciali disponibili. E se avessi bisogno di seguire la via commerciale, probabilmente darei un'occhiata da vicino a coverity (e non guarderò mai più su CAST).

[Update] quanto riguarda la tua domanda circa le prestazioni - findbugs è in grado di eseguire la scansione di grandi basi di codice senza un problema (se si verificano problemi poi pubblicarlo su findbugs mailing list e che vi aiuterà). Ricordo che allora i findbugs erano anche uno degli strumenti più veloci. La copertura, ad esempio, aveva bisogno di quasi 2 ore per finire, mentre findbugs era fatto in meno di 10 minuti. Gli altri strumenti dove tra questi numeri.

Per quanto riguarda la scansione del codice C e C++, è possibile vedere Splint e cppcheck. Ci sono anche altri thread helpful che parlano di quell'argomento. Ma come accennato dal momento che findbugs è solo per java e si desidera rilevare problemi linguistici inter-programmazione, gli strumenti commerciali possono avere un vantaggio. Quindi, alla fine, dato che findbugs è gratuito, basta eseguirlo sulla base di codice e vedere cosa succede a te stesso - il tuo progetto può trarne beneficio! Quindi correggi i bug trovati e poi fai una prova con alcuni degli strumenti commerciali - e in base alla quantità di bug che trovano e al prezzo che pagherai, trai le tue conclusioni. Per fare un esempio: uno degli strumenti costa "Linee di codice"/diviso per 10 (in $). Ma può essere che nel suo caso si ottiene uno sconto ;-)

[UPDATE II] trovato un interessante master thesis discutere di questo argomento. La parte principale riguarda i findbug ma menziona anche klockwork e coverity.

+1

Grazie mille. la tua risposta è molto utile. Ho ancora una domanda. In realtà devo fare analisi statiche per i codici full source Android che includono java, c e C++. Secondo te, Findbugs ha dei limiti in termini di copertura di altre lingue. Per quanto riguarda i limiti, mi chiedo anche se Findbugs possa coprire grandi codici sorgente come Android AOSP (java: 10 milioni di LOC, c/C++: 5 milioni di LOC), non solo una app per Android. – 500004dolkong

+0

La tua risposta e il tuo consiglio sono molto impressionanti e utili per me. Molte grazie.^^ – 500004dolkong

+0

La tua risposta è stata un buon punto di riferimento. Nella tua esperienza quali sono le percentuali di falsi positivi rispetto ai falsi negativi per queste suite. Grazie. –

Problemi correlati