Die Wahl eines statischen Code-Analyse-Tool

stimmen
54

Ich arbeite an einem Projekt, wo ich in einer UNIX-Umgebung in C Codierung bin. Ich habe das Fusseln Tool wurde mit meinem Quellcode zu überprüfen. Lint hat mich um eine lange Zeit (seit 1979), kann jemand ein neueres Code-Analyse-Tool schlägt ich verwenden könnte? Vorzugsweise ist ein Werkzeug, das frei ist.

Veröffentlicht am 05/08/2008 um 22:19
quelle vom benutzer
In anderen Sprachen...                            


15 antworten

stimmen
30

Nicht übersehen, den Compiler selbst.

Lesen Sie die Dokumentation des Compilers und finden Sie alle Warnungen und Fehler kann es geben, und aktivieren Sie dann so viele wie sinnvoll für Sie.

Auch stellen Sie sicher, dass Compiler zu sagen, Warnungen wie Fehler zu behandeln, so dass Sie gezwungen sind, sie sofort zu beheben. ( "Werror" auf gcc)

Auch: „-Wall“ auf gcc hat nicht alle Warnungen aktivieren, nicht täuschen lassen.

Auch auch: Besuche valgrind - es „automatisch erkennen [s] viel Speicherverwaltung und Threading-Bugs und Profil [s] Ihre Programme im Detail.“ (Kostenlos!)

Valgrind ist kein statisches checker, aber es ist ein großes Werkzeug! http://valgrind.org

Beantwortet am 05/08/2008 um 23:17
quelle vom benutzer

stimmen
14

Für C - Code, sollten Sie auf jeden Fall auf jeden Fall verwenden FlexeLint . Ich benutzte es fast 15 Jahre und schwören darauf. Einer der wirklich großen Features , die es hat , ist , dass Warnungen selektiv aus und ( „-e123 * / / * lint“) über Kommentare im Code umgewandelt werden. Dies erwies sich als ein leistungsfähiges Dokumentations sein , wenn Sie etwas aus dem Üblichen heraus wollte. „Ich wende mich Warnung X ab, daher gibt es einige gute Gründe ich tue X.“

Für alle in interessante C / C ++ Fragen, schauen Sie sich einige ihrer Beispiele auf ihrer Website und sehen, ob Sie die Fehler herausfinden können, auf die Hinweise ohne hinzusehen.

Beantwortet am 05/08/2008 um 22:42
quelle vom benutzer

stimmen
12

Ich habe gute Dinge gehört über Klirren statischen Analysator , die IIRC nutzt LLVM als es Backend ist. Wenn das auf der Plattform implementiert ist, das könnte eine gute Wahl sein.

Von dem, was ich verstehe, tut es ein bisschen mehr als nur Syntaxanalyse. "Automatische Bug Finding", zum Beispiel.

Beantwortet am 06/08/2008 um 01:40
quelle vom benutzer

stimmen
5

Ich habe vor kurzem eine Liste aller statischen Analysetools zusammengestellt ich zu meiner Verfügung hatte, ich bin immer noch dabei, sie alle auszuwerten. Beachten Sie, dass diese meist Sicherheitsanalyse-Tools.

Beantwortet am 03/09/2008 um 23:11
quelle vom benutzer

stimmen
5

Wir haben mit Coverity Prevent C ++ Quellcode zu überprüfen.

Es ist nicht ein kostenloses Tool (obwohl ich glaube, dass sie frei Scannen für Open-Source-Projekte anbieten), aber es ist eines der besten statischen Analysetools Sie finden. Ich habe gehört, es ist noch eindrucksvoller auf C als auf C ++, aber es half uns bisher eine ganze Reihe von Fehlern zu vermeiden.

Beantwortet am 15/08/2008 um 18:47
quelle vom benutzer

stimmen
4

Sie können verwenden cppcheck . Es ist eine einfache statische Code - Analyse - Tool zu verwenden.
Zum Beispiel:
cppcheck --enable=all .
prüfen alle C / C ++ Dateien im aktuellen Ordner.

Beantwortet am 25/06/2015 um 15:54
quelle vom benutzer

stimmen
1

Sie können versuchen , CppDepend , einen ziemlich kompletten statischen Analysator auf Windows und Linux, throught VS - Plugin, IDE oder Befehlszeile, und es ist kostenlos für Open - Source - Beiträger

Beantwortet am 26/06/2015 um 12:01
quelle vom benutzer

stimmen
1

PC-lint / FlexeLint ist sehr leistungsfähig und nützlich statische Analyse - Tools und in hohem Maße konfigurierbar, aber leider nicht frei.

Wenn er erstmals ein Tool wie diese, können sie große Anzahl von Warnungen erzeugen, die es schwer, zwischen Dur und Moll diejenigen zu unterscheiden, machen können. Daher ist es am besten so früh im Projekt wie möglich mit dem Werkzeug auf Ihrem Code zu starten, und dann auf dem Code so oft wie möglich zu laufen, so dass Sie mit neuen Warnungen umgehen können, wie sie kommen.

Mit Dauereinsatz wie diese, lernen Sie bald, wie Sie Ihren Code in einer Art und Weise zu schreiben, die an die Regeln durch das Werkzeug aufgebracht bestätigt.

Aus diesem Grunde ziehe ich Tools wie Lint, die relativ schnell laufen, und so kontinuierliche Nutzung zu fördern, anstatt die umständlichen Tools, die Sie weniger häufig können am Ende mit, wenn überhaupt.

Beantwortet am 20/12/2008 um 00:29
quelle vom benutzer

stimmen
1

Lint artigen Werkzeuge leiden in der Regel von einem „Fehlalarm“ Problem: sie viel mehr Probleme berichten, als wirklich vorhanden ist. Wenn der Anteil der wirklich-nützlicher Warnungen zu niedrig ist, lernt der Benutzer nur das Werkzeug zu ignorieren. Modernere Tools aufwenden einige Mühe auf die wahrscheinlichsten / interessant Warnungen zu konzentrieren.

Beantwortet am 23/08/2008 um 15:29
quelle vom benutzer

stimmen
1

Sie könnten das finden Uno - Tool nützlich. Es ist eine der wenigen freien Nicht-Spielzeug - Optionen. Es unterscheidet sich von Fusseln, FlexeLint usw. auf eine kleine Anzahl von „semantische“ errors Fokussierung (Nullzeiger derefs, out-of-Grenzen Array - Indizes, und die Verwendung von nicht initialisierten Variablen). Es ermöglicht auch benutzerdefinierte Kontrollen, wie Lock-Unlock - Disziplin.

Ich arbeite auf eine öffentliche Freigabe eines Nachfolgers Werkzeug, Orion ( CONTENT nicht mehr verfügbar )

Beantwortet am 15/08/2008 um 23:39
quelle vom benutzer

stimmen
0

Sparse ist ein Computer - Software - Tool, bereits auf Linux, entworfen möglich Codierung Fehler im Linux - Kernel zu finden.

Es gibt zwei aktive Projekte von Linux Verifikationszentrum richteten Qualität der ladbaren Kernel - Module zu verbessern.

  1. Linux Driver Verification (LDV) - ein umfassendes Toolset für die statische Quellcode Überprüfung der Linux-Gerätetreiber.
  2. KEDR Rahmen - ein erweiterbares Framework für die dynamische Analyse und Verifikation von Kernel-Modulen.
  3. Ein weiteres laufendes Projekt ist Linux System-Überprüfung Datei, die ein spezielles Toolset für die Überprüfung der Linux-Dateisystemimplementierungen entwickeln soll.
Beantwortet am 20/12/2012 um 08:36
quelle vom benutzer

stimmen
0

Ich habe festgestellt, dass es im Allgemeinen am besten mehrere statische Analyse-Tools zu verwenden, um Fehler zu finden. Jedes Werkzeug ist anders gestaltet, und sie können sehr verschiedene Dinge voneinander finden.

Es gibt einige gute Diskussionen in einigen der Gespräche hier . Es ist von einer Konferenz des US - Ministerium für innere Sicherheit auf statische Analyse statt.

Beantwortet am 15/06/2011 um 07:53
quelle vom benutzer

stimmen
0

Tag auch,

Ich bin vollkommen einverstanden mit den Vorschlägen zu lesen und zu verdauen, was der Compiler sagen Sie nach -Wall Einstellung.

Ein gutes statisches Analyse - Tool für Sicherheit flawfinder von David Wheeler geschrieben. Es macht einen guten Job sucht für verschiedene Sicherheitslücken,

Allerdings ersetzt es kein knowledgable jemand lesen Sie Ihren Code haben. Als David auf seiner Web-Seite sagt: „Ein Narr mit einem Werkzeug noch ein Tor!“

Prost,

rauben

Beantwortet am 26/08/2008 um 16:21
quelle vom benutzer

stimmen
0

Flusen wird ständig aktualisiert ... also warum sollten Sie eine neuere wollen , ein .

BTW FlexeLint ist Flusen

Beantwortet am 23/08/2008 um 12:42
quelle vom benutzer

stimmen
0

Es gibt eine „-Weffc ++“ Option für gcc, die nach dem Mac OS X-man-Seite wird:

Warnen über die Verletzung der folgenden Stilrichtlinien von Scott Meyers' Effective C ++ Buch:

[Schnipp]

Ich weiß, dass Sie C gefragt, aber das ist die nächste, die ich kenne ..

Beantwortet am 15/08/2008 um 23:03
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more