Ich habe vor ein paar Jahren einen Vergleich zwischen kommerziellen und Opensource statischen Code-Analyse-Tools (SCAT) gemacht. Klocwork war einer von ihnen. Um es kurz zu machen, das Ergebnis war, dass die kommerziellen Tools in der Java-Umgebung nicht den (zusätzlichen) Wert boten, um ihren Preis zu rechtfertigen. In der Anzahl der gefundenen Fehler war Findbugs viel besser als jedes dieser Tools. Nur Coverity hat einige Bugs gefunden, die keines der anderen Tools gefunden hat und die niedrigste FPR. Auf der anderen Seite hat Coverity nicht viele Bugs entdeckt, die von Wanzen gefunden wurden - also rechtfertigten uns alle Tools nicht mit dem Geld. Und wenn richtig konfiguriert, bietet findbugs auch einen sehr niedrigen FPR. In einer neueren Version enthielt coverity die Möglichkeit, Findbugs in ihre Lösung zu integrieren. Mhhmmmm warum haben sie das gemacht? :-)
Es gibt jedoch Szenarien, z. Wenn Sie andere Programmiersprachen oder Interprogrammiersprachen-Scans verwenden (zB Ihre Codebasis enthält andere Programmiersprachen (wie C, C++, C# ...)) oder benötigen Sie einige der zusätzlichen Funktionen, die von diesen Tools zur Verfügung gestellt werden, dann könnte es sich lohnen in kommerzielle Werkzeuge. Aber Sie können sich selbst entscheiden, denn jede Lösung kann getestet werden. Gehen Sie auf ihre Webseite und laden Sie eine Testversion herunter/fordern Sie sie an und versuchen Sie es selbst (vielleicht haben sich die Dinge inzwischen geändert?).
überprüfte ich die folgenden Tools aus:
Gewerbe:
- Coverity
- Klocwork
- Parasoft
- Cast
Open Source:
Also am Ende, was haben wir getan? Wir haben das kostenlose sonar server installiert, das viele Tools wie findbugs, pmd, checkstyle, cobertura und ähnliches kombiniert. Damit haben wir eine kostenlose Lösung erhalten, die in vielerlei Hinsicht besser ist als die verfügbaren kommerziellen Tools. Und wenn ich den kommerziellen Weg gehen müsste, würde ich wahrscheinlich die Coverity genau unter die Lupe nehmen (und CAST nie wieder anschauen).
[Update] In Bezug auf Ihrer Frage über die Leistung - findbugs in der Lage, großen Codebases, ohne ein Problem zu scannen (wenn Sie Probleme dann per Post auf den findbugs mailing list erleben und sie werden Ihnen helfen). Ich erinnere mich damals, dass findbugs auch eines der schnellsten Werkzeuge war. Coverity zum Beispiel brauchte fast 2 Stunden, um fertig zu sein, während Findbugs in weniger als 10 Minuten erledigt wurde. Die anderen Werkzeuge waren zwischen diesen Zahlen.
Bezüglich des Scannens von C- und C++ - Code können Sie sich Splint und cppcheck ansehen. Es gibt auch andere helpful Threads, die dieses Thema diskutieren. Aber wie bereits erwähnt, da findbugs nur für Java gedacht ist und Sie interpro- grammierbare Sprachprobleme erkennen möchten, können kommerzielle Tools einen Vorteil haben. Also am Ende seit findbugs ist kostenlos - einfach auf Ihrer Codebasis laufen und sehen, was passiert für sich selbst - Ihr Projekt kann nur davon profitieren! Dann beheben Sie die gefundenen Fehler und führen Sie anschließend eine Testversion mit einigen der kommerziellen Tools durch - und ziehen Sie, abhängig von der Anzahl der gefundenen Fehler und dem Preis, den Sie zahlen, Ihre eigene Schlussfolgerung. Um Ihnen ein Beispiel zu geben: Eines der Tools kostet 'Codezeilen'/dividiert durch 10 (in $). Aber es kann sein, dass Sie in Ihrem Fall einen Rabatt ;-)
[UPDATE II] Gefunden ein interessantes master thesis dieses Thema zu diskutieren. Der Hauptteil handelt von Findbugs, erwähnt aber auch Klockwork und Coverity.
Wählen zu schließen als zu breit. –