2008-10-06 11 views
17

Ich möchte Kommentare von Leuten erhalten, die Coverity zur statischen Analyse von Java-Code verwendet oder ausgewertet haben. Ich weiß, dass es in der C/C++ Welt sehr beliebt ist, aber lohnt es sich, das Geld für die Java-Analyse auszugeben oder bin ich besser dran mit PMD, Findbugs und anderen Open-Source-Tools?Coverity für Java statische Analyse

Antwort

4

Ich werde mit einer etwas relevanten Antwort einmischen. Ich habe Klocwork für den Java- und C-Code benutzt. Klocwork ist ein naher Konkurrent von Coverity ... kostenmäßig sind sie ungefähr gleich (schau genau hin, Klocwork sieht billiger aus, bis du tatsächlich kaufst, was du brauchst), und funktionell kämpfen sie hin und her.

Für C/C++, es ist großartig. Für Java .... nun, es hat geholfen, eine Menge Ressourcen-Lecks zu finden (# $ @^# ing Java-Entwickler scheinen zu vergessen, dass Ressourcen wie Datei-Handles nicht Müll gesammelt werden), aber es scheint nicht viele zu finden " kritische "Bugs". Es ist wahrscheinlich, weil die Sprache selbst hilft, vor einigen der grundlegenderen, aber schwer zu findenden Fehlern zu schützen (Array-Überläufe, Zeigerverfälschung, usw.).

Holen Sie sich Coverity in eine Demo, sie sind mehr als glücklich zu. Sehen Sie, was für Dinge sie finden.

15

Wenn Sie heute nichts verwenden, würde ich mit Findbugs und PMD beginnen. Sie sind einfach zu installieren und zu verwenden. Konzentrieren Sie sich darauf, Korrektheitsfehler zuerst mit Findbugs zu überprüfen und zu beheben - sie empfehlen, mit Korrektheitsfehlern für hohe und mittlere Schweregrade zu beginnen, da die Prüfer sehr niedrige Fehlalarme haben und Sie eine gute Rendite erhalten. Ermöglichen Sie Entwicklern die Verwendung von PMD zur Bereinigung des Codes und das Findbugs-Plug-in in Eclipse zur Überprüfung des neuen Codes. Inkrementelle Arbeit wird die Entwickler dazu bringen, die Nützlichkeit dieser Tools zu verstehen und zu nutzen.

Die Java-Checker von Coverity sind immer noch schwach im Vergleich zu ihren C/C++ - Checkern. Wir benutzen Findbugs, PMD, Coverity und Klocwork, weil sie alle unterschiedliche Stärken haben und wir paranoid sind. Wenn Sie nicht paranoid sind, können Sie bei Open-Source-Tools bleiben und viel Wert erhalten. Oder wenn Sie eine Sicherheitsüberprüfung benötigen: Dann sollte Klocwork oder speziell Fortify eine gründlichere Arbeit für Sie erledigen.

+0

Haben Sie einen Vergleich verschiedener dieser Tools für Java? –

+0

es ist genug, um Findbugs zu verwenden, sogar Coverity verwenden das. Überprüfen Sie die Hauptfunktionen (Untertitel "FindBugs") http://www.coverity.com/library/pdf/coverity-ds-java.pdf – ozhan

3

Ich werde ein begrenztes mir-auch zu den vorhergehenden Antworten hinzufügen, etwas eingeschränkt durch die Coverity NDA, an die ich gebunden bin. Coverity Prevent hat eine beeindruckende öffentliche Erfolgsbilanz beim Aufspüren von Fehlern in Open-Source-C/C++ - Code, aber ihr Java-Produkt ist viel neuer. (Coverity hat eine Pressemitteilung zu meinem früheren Arbeitgeber, daher kann ich sagen, dass es geholfen hat, viele Fehler in unserem C/C++ - Code zu finden und zu beheben, mehr als ich in meiner ganzen früheren Karriere bei der Fehlersuche gefunden hatte.) FindBugs eine beeindruckende Arbeit auf Java-Code, und Sie können den Preis nicht schlagen. Aber der große Punkt ist schon gemacht: Probieren Sie beide unter Ihren echten Code aus, bevor Sie kaufen. Es gibt keinen Ersatz für die Realität, und die gängige Meinung in der statischen Analyse ist, dass es erstaunlich wenig Überschneidungen in den Tools gibt.

0

Wie andere gesagt haben, ist der beste Weg zu entscheiden, all diese Werkzeuge auszuprobieren.

Coverity hat kürzlich ein gehostetes statisches Analyse-as-a-Service-Produkt namens Code Spotter() vorgestellt, das sich derzeit in der Beta-Phase befindet. Es verwendet die gleiche Analyse-Engine wie das Enterprise-Produkt Coverity, ist jedoch in eine andere (vereinfachte) Benutzeroberfläche eingebettet. Da es sich um einen gehosteten Dienst handelt, ist es sehr einfach, damit zu spielen, um ein Gefühl für die Coverity-Analysefähigkeiten zu bekommen.

Zum Zeitpunkt der Erstellung dieses Artikels ist Code Spotter nur Java-fähig, aber andere von Coverity unterstützte Sprachen sollten bald verfügbar sein.

Verwandte Themen