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:
- Coverity
- Klocwork
- Parasoft
- 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.
Voto per chiudere come troppo ampio. –