Frage

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

Handel C ++ statische Analyse-Produkte zur Verfügung. Obwohl mit solchen Produkten groß sind, sind die Kosten einfach viel zu viel für Studenten und es ist in der Regel ziemlich hart Testversion zu erhalten.

Die Alternative ist Open-Source-C ++ statische Analyse-Tools zu finden, die auf mehreren Plattformen (Windows und Unix) ausgeführt werden. ein Open-Source-Tool mithilfe könnte es geändert werden, um bestimmte Bedürfnisse anzupassen. die Werkzeuge zu finden, ist nicht einfach Aufgabe.

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

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

Einige weiterführende Links.

War es hilfreich?

Lösung

Oink ist ein Werkzeug auf der Front-End-++ Elsa C gebaut. Mozillas Schweinefleisch ist ein Fork von Elsa / Oink.

Siehe auch: http://danielwilkerson.com/oink/index.html

Andere Tipps

cppcheck ist Open Source und Cross-Plattform.

Mac OSX:

brew install cppcheck

In Bezug auf das GNU Compiler gcc hat bereits eine eingebaute Option, die zusätzlich ermöglicht Warnung zu denen von -Wall. Die Option ist -Weffc ++ und es geht um die Verletzung einiger Richtlinien von Scott Meyers in seine Bücher veröffentlicht " Effektive und effektiver C ++ ".

Insbesondere die Option erkennt die folgenden Elemente:

  • Definieren Sie eine Kopie und einen Zuweisungsoperator für Klassen mit dynamisch zugewiesenen Speicher.
  • Bevorzugen Initialisierung Zuordnung in Konstrukteuren.
  • Erstellen Sie Destruktoren in Basisklassen virtuell.
  • Haben Sie "Operator =" return einen Verweis auf * this.
  • Versuchen Sie nicht, einen Verweis zurück, wenn Sie ein Objekt zurückgeben müssen.
  • Unterscheiden Sie zwischen Präfix und Postfix Formen der Inkrement- und Dekrementoperatoren.
  • Überlastung Never "&&", "||", oder "".

In Entwicklung für jetzt, aber Klirren tut Analyse C und zielt C zu behandeln ++ über Zeit. Es ist ein Teil der LLVM Projekt.

Aktualisieren : Während die Zielseite sagt: "Der Analysator ist ein kontinuierlicher work-in-progress", so ist es doch jetzt als statischer Analysator dokumentiert sowohl für C und C ++.

Frage: Wie kann ich GCC laufen / Clang für die statische Analyse? (Warnungen nur)

Compiler-Option: -fsyntax-only

Jemand anderes -Weffc ++ erwähnt, aber das ist eigentlich eine der nur GCC Warnungen ich standardmäßig eingeschaltet nicht. der Satz von Warnungen jedoch, dass ich ist schalte auf das wichtigste statisches Analysewerkzeug in meinem Kit. Sie können die komplette Liste der empfohlenen Warnungen finden Sie unter .

Zusammenfassung:

  

-pedantic -Wall -Wextra -Wcast ausrichten -Wcast-qual -Wctor-dtor-privacy -Wdisabled-Optimierung -Wformat = 2 -Winit-Selbst -Wlogical-op -Wmissing-Erklärungen -Wmissing-include-dirs - Wnoexcept -Wold-style-Guss -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-Umwandlung -Wsign-Promo -Wstrict-null-Sentinel -Wstrict-Überlauf = 5 -Wswitch-default -Wundef Werror -Wno-ungenutzt

Beachten Sie, dass einige von ihnen eine neue Version von gcc benötigen, so können Sie sie aus der Liste entfernen müssen, wenn Sie wieder auf 4,5 oder etwas stecken geblieben sind.

John Carmack erwähnt auch PVS-Studio in diesem interessanten Blog-Post auf "statische Code-Analyse" .

Wenn Sie mit dem Open Source, die Sie wirklich gemeint "frei", dann Microsofts PREfast Analyse ist ein guter. Nur für Windows ofcourse. Es ist vollständig in Visual Studio & Compiler integriert. z.

cl /analyze Sample.cpp

Mozillas stationäre Analyse wahrscheinlich ist einen Blick wert.

Splint scheint die Rechnung für C zu füllen.

Wenn Sie nicht Open Source angegeben haben würde ich sagen Gimpel Software 's PCLint ist wahrscheinlich eines der besten Werkzeuge für statischen Code in C ++ überprüft. Aber natürlich ist es nicht Open Source.

Mac OSX:

brew install splint

Microsofts PREfast ist auch in der Windows Driver Kit zur Verfügung. Version 7.0 ist zum Download hier .

Der Microsoft docs Zustand, dass es nur gegen Treibercode ausgeführt werden soll, aber die (alten) Blog-Post legt Schritte aus, um sie auszuführen. Vielleicht kann es in einen normalen Build-Prozess integriert werden?

Wir haben auf einer Eclipse-CDT-Plug-in arbeiten genannt metriculator. Es ist immer noch in der Entwicklung, aber einige wichtige Kennzahlen (z LSLOC, McCabe, EfferentCoupling) sind bereits implementiert.

Siehe http: //sinv-56013.edu.hsr .ch / redmine / projects / metricular / wiki / Dokumentation , um weitere Informationen wie Video-Demonstration und Dokumentation.

Die aktuelle Nightly Build ist für die Installation via Update-Site unter: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/

Weitere Beschreibung

Metriculator statisch Analyse C ++ Quellcode und erzeugt Softwaremetriken. Metrics sind implementiert als Codan Kontrolleure. Die Analyseergebnisse können in einer separaten Ansicht erkundet werden. Jeder Metrik hat konfigurierbaren Eigenschaften (beispielsweise eine Schwelle für ‚max Codezeilen pro Funktion'). diese Schwelle überschritten wird ein Problem melden und eine Markierung erstellen im Quelltext-Editor.

mit metriculator können Sie:

  • Analyse C ++ Dateien / Ordner / Projekte
  • Maßschwellen definieren und aktivieren / deaktivieren metric Codans Präferenz Seite
  • using
  • haben Problem Marker in Quellcode-Editoren
  • erforschen metrische Ergebnisse
  • Export metrische Ergebnisse als Tag Cloud (erhältlich als optionales Feature über Update-Site)

Zur Zeit metriculator kommt mit folgenden Kennzahlen:

  • McCabe (zyklomatische Komplexität)
  • EfferentCoupling pro Typ
  • Logische Quelle Codezeilen
  • Die Anzahl der Mitglieder pro Typ
  • Die Anzahl der Parameter pro Funktion

Sie sollten oo-Browser versuchen, es ist genial Integration hat mit xemacs

Man kann auch Code-Erweiterungen von GCC in MELT (eine domänenspezifische Sprache für die Erweiterung GCC entwickelt) oder GCC Plugins in C (viel härter) einige benutzerdefinierte Analyse zu tun.

Doxygen hat einige Steuerflussanalyse und erzeugt Graphen. Diese können nicht sein, was Sie suchen, aber ich habe foudn sie nützlich zu betrachten.

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