codeanalyse - Welche statischen C++-Analysetools für Open Source sind verfügbar?




statische codeanalyse nullpointerexception (10)

Bezüglich des GNU-Compilers hat gcc bereits eine eingebaute Option, die eine zusätzliche Warnung für diejenigen von -Wall ermöglicht. Die Option ist -Weffc ++ und es geht um die Verletzungen einiger Richtlinien von Scott Meyers, die in seinen Büchern " Effective and Effektiver C ++ " veröffentlicht wurden.

Insbesondere erkennt die Option die folgenden Punkte:

  • Definieren Sie einen Kopierkonstruktor und einen Zuweisungsoperator für Klassen mit dynamisch zugewiesenem Speicher.
  • Bevorzugen Sie die Initialisierung für die Zuweisung in Konstruktoren.
  • Machen Sie Destruktoren in Basisklassen virtuell.
  • Lassen Sie "operator =" einen Verweis auf * this zurückgeben.
  • Versuchen Sie nicht, eine Referenz zurückzugeben, wenn Sie ein Objekt zurückgeben müssen.
  • Unterscheide zwischen Präfix- und Postfix-Formen von Inkrement- und Dekrementoperatoren.
  • Überlasten Sie niemals "&&", "||" oder ",".

Java hat einige sehr gute Open Source statische Analysewerkzeuge wie FindBugs , Checkstyle und PMD . Diese Tools sind einfach zu bedienen, sehr hilfreich, läuft auf mehreren Betriebssystemen und kostenlos .

Kommerzielle statische C ++ - Analyseprodukte sind von den Herstellern Klocwork , Gimpel und Coverity . Außerdem gibt es weniger bekannte PVS-Studio- Analysatoren. Obwohl solche Produkte großartig sind, sind die Kosten für die Studenten viel zu hoch und es ist normalerweise ziemlich schwierig, eine Testversion zu bekommen.

Die Alternative besteht darin, statische C ++ - Analysetools zu finden, die auf mehreren Plattformen (Windows und Unix) ausgeführt werden können. Durch die Verwendung eines Open-Source-Tools könnte es an bestimmte Bedürfnisse angepasst werden. Das Finden der Werkzeuge war nicht einfach.

Im Folgenden finden Sie eine kurze Liste der statischen C ++ - Analysetools, die von anderen gefunden oder vorgeschlagen wurden.

Was sind andere portable Open-Source-C ++ statische Analyse-Tools, die jeder kennt und empfohlen werden kann?

Einige verwandte Links.


Doxygen führt eine Kontrollflussanalyse durch und generiert Grafiken. Das mag nicht das sein, wonach du suchst, aber ich habe sie nützlich, um sie anzuschauen.


Jemand anderes erwähnt -Weffc ++, aber das ist tatsächlich eine der einzigen GCC-Warnungen, die ich standardmäßig nicht einschalte. Die Warnung, die ich einschalte, ist jedoch das wichtigste statische Analyse-Tool in meinem Kit. Sie können die vollständige Liste der empfohlenen Warnungen sehen .

Zusammenfassend:

-pedantic -Wall -Wextra -Wcast-align -Wcast-Qual -Wektor-dtor-Privatsphäre -Winding-Optimierung -W Format = 2 -Winit-self -Wlogical-op -Wissenden-Deklarationen -Wissenden-include-Dirs -Wnoexcept -Wold -style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-Konvertierung -Wesign-promo -Wstrict-Null-Sentinel -Wstrict-Überlauf = 5 -Wswitch-default -Wundef -Werror -Wno-unused

Beachten Sie, dass einige davon eine neue Version von gcc benötigen, daher müssen Sie sie möglicherweise aus Ihrer Liste entfernen, wenn Sie auf 4.5 oder etwas zurückbleiben.



Microsoft PREFast ist auch im Windows Driver Kit verfügbar. Version 7.0 kann here heruntergeladen here .

Die Microsoft-Dokumentation besagt, dass es nur gegen den Treibercode ausgeführt werden sollte, aber dieser (alte) Blogpost enthält Schritte zum Ausführen. Vielleicht kann es in einen normalen Build-Prozess integriert werden?



Wenn Sie mit Open Source wirklich "frei" prefast , dann ist Microsofts prefast Analyse eine gute prefast . Nur für Windows. Es ist vollständig in Visual Studio und dem Compiler integriert. z.B:

cl / analysiere Sample.cpp


Wir haben an einem Eclipse-CDT-Plug-in namens Metriculator gearbeitet. Es ist noch in der Entwicklung, aber einige wichtige Metriken (z. B. LSLOC, McCabe, EfferentCoupling) sind bereits implementiert.

Weitere Details wie Videodemonstration und Dokumentation finden Sie unter http://sinv-56013.edu.hsr.ch/redmine/projects/metricular/wiki/Documentation .

Der neueste Nightly Build ist für die Installation über die Update-Seite verfügbar unter: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/

Weitere Beschreibung

Metriculator analysiert C ++ - Quellcode statisch und generiert Software-Metriken. Metriken werden als Codan-Checker implementiert. Die Analyseergebnisse können in einer separaten Ansicht untersucht werden. Jede Metrik hat konfigurierbare Eigenschaften (z. B. eine Schwelle für "maximale Codezeilen pro Funktion"). Wenn Sie diesen Schwellenwert überschreiten, wird ein Problem gemeldet und im Quellcode-Editor eine Markierung erstellt.

Mit Metriculator können Sie:

  • Analysiere C ++ Dateien / Ordner / Projekte
  • Definieren Sie Metrikschwellenwerte und aktivieren / deaktivieren Sie Metrik auf der Codans-Vorgabeseite
  • Haben Sie Problemmarker in Quellcode-Editoren
  • metrische Ergebnisse erkunden
  • Metrik-Ergebnisse als Tag-Cloud exportieren (als optionale Funktion über Update-Site verfügbar)

Der aktuelle Metriculator enthält folgende Metriken:

  • McCabe (zyklomatische Komplexität)
  • EfferentCoupling pro Typ
  • Logische Quellzeilen des Codes
  • Anzahl der Mitglieder pro Typ
  • Anzahl der Parameter pro Funktion

CppCheck ist Open Source und plattformübergreifend.

Mac OS X:

brew install cppcheck





static-analysis