Frage

wurde ich vor kurzem über Alternativen gefragt, um zu Coverity Prevent für einen Code Basis, die sowohl die C / C ++ und Java enthält. Offensichtlich auf der Java-Seite, die frei verfügbaren Tools sind Findbugs (kompilierten Code-Analyse) und PMD (statische Code-Analyse). Sie sind sehr stark, vor allem, wenn Sie mit IDEs Untersuchung Integration beginnen (die wiederum frei sind).

Allerdings sind die Dinge heikel, wenn Sie in Bewegung in die C / C ++ starten Reich mit den verschiedenen Compilern, Architekturen, etc.

Ich habe eine Vielzahl von Werkzeugen für die Java-Seite vorgeschlagen, sowohl Findbugs und PMD einschließlich. Was ich suche ist die beste Option für das C / C ++ Seite bei der Verwendung der folgenden Messwerte betrachtet:

  1. Preis: frei ist besser, kann aber durch eine besseren Wert geschlagen werden. Allerdings Preismodelle, die pro Zeile Code berechnen sind erschreckend.
  2. Feature-Set: wie funktioniert dieses Tool mein Leben besser machen? Auf welche Weise erkennt es meine Fehler, bevor ich sie in überprüfen, bevor wir den Code versenden, etc.?
  3. Usability: kann ich das Werkzeug an meinem Schreibtisch benutzen? Kann ich die Berichte und / oder Erkenntnisse teilen? Kann ich das Werkzeug mit Fogbugz (die wir in meiner Gruppe verwenden) integrieren? Kann ich das Werkzeug in CruiseControl- (oder gleichwertig) integriert werden?

Das ultimative Tool wäre etwas, das als nützlich und brauchbar als eine Kombination aus Findbugs und PMD mit identischem Funktionsumfang ist, alle für Null-Dollar pro Sitzplatz.

War es hilfreich?

Lösung

Die beiden in den Sinn kommen, sind Splint für C und cppcheck für C ++.

Wenn Sie mehr Optionen aussehen wollen, ist diese Funktion dieser Werkzeuge ist „statische Code-Analyse“. Das könnte Ihnen helfen, mehr Werkzeuge für C und / oder C ++ finden. Außerdem können Sie in der Antwort auf die Frage interessiert sein: "Was Open-Source-C ++ statische Analyse-Tools zur Verfügung? "

Andere Tipps

C ++ ist eine komplizierte genug Sprache, dass die Werkzeuge, die für sie (wie Refactoring oder statische Analyse-Tools) ist einfach nicht so gut wie Java oder C #.

Gimpel Software PC-lint ist die nächste Sache zu einer Standard-Fehler-Überprüfungstool für C ++, dass ich kennen. Es ist kommerziell mit einem vernünftigen Preismodell. Ich weiß nicht, wie gut es mit anderen Tools integriert.

Die Clang Open-Source-Projekt soll schließlich in der Lage sein, viel von dem zu tun, was Sie wollen (und Aussehen < em> wirklich cool), aber es ist immer noch in der Entwicklung.

PC-Lint ist der Weg zu gehen. Im Gegensatz zu den meisten anderen Tools, hat es voll inter Funktion und Inter-Modul-Wert-Tracking und unterstützt alle haarigen Rändern der Vorlage Zusammenstellung / als auch das Parsen. Ich kaufte mir ein persönliches Exemplar für mich vor etwa 9 Jahren, nur weil es so billig ist. Ich landete es eine Menge in Open-Source-Projekten verwenden. PC-Lint Lizenz auf LOC nicht-basiert sind, rufen Sie nicht zu Hause, und es gibt keine Lizenzserver. Es ist sehr viel auf dem Ehrensystem und sehr no-nonsense. Über den 9 Jahren habe ich einige Probleme darin gefunden (und die haben nur wenige und weit zwischen gewesen), aber sie haben fast immer in ein paar Wochen fest.

Open Source weise gibt es SMATCH, basierend auf Coverity Meta-Kompilation Analysetechniken, die das Wein-Projekt sehr stark, um große Wirkung verwendet. PMD der cpd (Kopieren und Einfügen-Detektor) Unter Tool arbeitet auf C ++, und ist wirklich schnell. Für zyklomatische Komplexität, gibt es pmccabe, die leicht installierbar via ist apt-get. (Auf Linux, Windows, ich kompilieren Sie die Quelle unter Cygwin)

PC-Lint hat einige Konfiguration erforderlich, um es gut zu bekommen arbeiten, einen Tag oder zwei am meisten. Die anderen Werkzeuge funktionieren nicht so tief, so dass Sie einfach auf die Erde mit einem Befehl ausgeführt wird, wie "finden -name .c |. Xargs pmccabe | sort -n | tail -n 20"

Ich habe verwendet Klocwork und Rational Software Analyzer in der Vergangenheit, und sie beide gut funktionieren, obwohl beide kommerzielle / nicht-frei sind.

Ich verwende flawfinder.py, die in C / C für 160 gefährliche Funktionen durchsucht ++. http://www.dwheeler.com/flawfinder/

Wenn Sie ein Ruby Port basierend auf flawfinder wollen, dann können Sie verwenden vulnxpose.rb. https://github.com/nanotechz9l/Source-code-analyzer

Beiden Tool scannt C / C ++ Quellcodedateien für bekannte Schwachstellen einschließlich Pufferüberlauf, Rennbedingungen, schwache Krypto, chroot-Gefängnis configs ... & mehr).

Rick

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top