2013-08-19 6 views
10

Wir verwenden Klocwork als ein statisches Analysewerkzeug.Haben Sie jemals die statischen Analyse-Tools Klocwork und Findbugs verglichen?

Klocwork ist ein kommerzielles Werkzeug und hat viele Vorteile, hat aber auch Einschränkungen wie falsche Positive.

Ich frage mich, wer jemals Clocwork mit anderen Open-Source-Tools wie Findbugs verglichen hat.

Generell ist bekannt, dass kommerzielle Tools zuverlässiger sind als Open Source-Tools.

Aber ich denke, dass Klocwork hat auch ein paar zuverlässige Probleme in bestimmten Geschäftsbereichen wie Android.

Können Sie sagen, dass Klocwork anderen Open-Source-Tools überlegen ist, insbesondere Findbugs in Aspekten von False Positives und False Negatives?

+0

Wählen zu schließen als zu breit. –

Antwort

19

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:

  1. Coverity
  2. Klocwork
  3. Parasoft
  4. 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.

+1

Vielen Dank. Ihre Antwort ist sehr hilfreich. Ich habe noch eine Frage. Eigentlich muss ich statische Analyse für Android vollständige Quellcodes, die Java, C und C++ enthalten. Ihnen zufolge hat Findbugs Einschränkungen in Bezug auf andere Sprachen. In Bezug auf Einschränkungen frage ich mich auch, ob Findbugs große Quellcodes wie Android AOSP (Java: 10 Millionen LOC, C/C++: 5 Millionen LOC), nicht nur eine Android-App abdecken können. – 500004dolkong

+0

Ihre Antwort und Ihr Rat sind sehr beeindruckend und hilfreich für mich. Danke vielmals. ^^ – 500004dolkong

+0

Ihre Antwort war ein guter Bezugspunkt. In Ihrer Erfahrung, was sind die Raten von falsch-positiven gegenüber falsch-negativen für diese Suiten. Vielen Dank. –