Ich arbeite an einem Projekt, bei dem ich in C in einer UNIX-Umgebung codiere. Ich habe das Lint-Tool verwendet, um meinen Quellcode zu überprüfen. Lint gibt es schon lange (seit 1979). Kann jemand ein neueres Codeanalyse-Tool vorschlagen, das ich verwenden könnte? Am besten ein kostenloses Tool.
Auswahl eines Tools zur statischen Codeanalyse [closed]
svec
Übersehen Sie nicht den Compiler selbst. Lesen Sie die Dokumentation des Compilers und finden Sie alle Warnungen und Fehler, die er bereitstellen kann, und aktivieren Sie dann so viele wie für Sie sinnvoll.
Stellen Sie außerdem sicher, dass Sie Ihren Compiler anweisen, Warnungen wie Fehler zu behandeln, damit Sie gezwungen sind, sie sofort zu beheben (-Werror
auf gcc). Übrigens, lass dich nicht täuschen -Wall
auf gcc tut nicht Aktivieren Sie alle Warnungen.
Vielleicht möchten Sie es überprüfen valgrind
(kostenlos!) – es „automatisch erkennen[s] viele Speicherverwaltungs- und Threading-Fehler und Profile[s] Ihre Programme im Detail.” Es ist kein statischer Checker, aber es ist ein großartiges Werkzeug!
-
Wie kommt es, dass dies die akzeptierte Antwort ist? Was ist, wenn ich die Ressourcensicherheit überprüfen möchte, z. B. Sperren/Entsperren? Der Compiler kann nichts machen. Und Valgrind ist dynamische Codeanalyse …
– ÄhmNyobe
25. März 2013 um 9:54 Uhr
Für C-Code sollten Sie auf jeden Fall verwenden Flexelint. Ich benutze es seit fast 15 Jahren und schwöre darauf. Eine der wirklich großartigen Funktionen ist, dass Warnungen über Kommentare im Code (“/* lint -e123*/”) selektiv ein- und ausgeschaltet werden können. Dies stellte sich als leistungsstarkes Dokumentationstool heraus, wenn Sie etwas Außergewöhnliches machen wollten. „Ich schalte Warnung X aus, deshalb gibt es einen guten Grund, warum ich X mache.“
Für alle, die sich für interessante C/C++-Fragen interessieren, schauen Sie sich einige ihrer Beispiele auf ihrer Website an und sehen Sie, ob Sie die Fehler herausfinden können, ohne sich die Hinweise anzusehen.
-
Flexelint ist lächerlich teuer.
– nwp
5. Juni 2014 um 13:21 Uhr
-
@nwp, ich würde nicht sagen, dass es teuer ist. Bei einem Einzelplatzpreis von 1000 $ (Unix) oder 400 $ (Windows) macht es sich wahrscheinlich mit einer Kundenausgabe bezahlt.
– Mark Harrison
5. Juni 2014 um 19:20 Uhr
-
@MarkHarrison: Kann ich das online verwenden?
– Benutzer2793162
22. Juli 2014 um 19:02 Uhr
Matthäus Schinckel
Ich habe Gutes darüber gehört clang statischer Analysator, wobei IIRC LLVM als Backend verwendet. Wenn dies auf Ihrer Plattform implementiert ist, ist dies möglicherweise eine gute Wahl.
Soweit ich weiß, macht es ein bisschen mehr als nur eine Syntaxanalyse. „Automatische Fehlersuche“ zum Beispiel.
Sie können verwenden cppcheck. Es ist ein einfach zu bedienendes Tool zur statischen Codeanalyse.
Zum Beispiel:
cppcheck --enable=all .
überprüft alle C/C++-Dateien im aktuellen Ordner.
Ich habe kürzlich eine Liste aller mir zur Verfügung stehenden statischen Analysetools zusammengestellt, ich bin noch dabei, sie alle zu evaluieren. Beachten Sie, dass dies hauptsächlich Sicherheitsanalysetools sind.
-
+1 für Schiene, ausgezeichnetes Werkzeug und kostenlos (wie bei Redefreiheit, nicht wie bei Freibier)
– Bortzmeyer
11. Mai 2009 um 8:15 Uhr
-
Es ist in beiden Bedeutungen des Begriffs kostenlos.
– sebnow
22. August 2010 um 14:46 Uhr
-
Dies sollte die beste Antwort sein. Warum kommen diese seltsamen Antworten, die nahelegen, teure kommerzielle Software, dynamische Checker und (WTF?) Nur-C++-Checker an die Spitze?
– Benutzer26742873
26. August 2021 um 5:14 Uhr
Kristof Propst
Wir haben verwendet Verdecktheit verhindern um den C++-Quellcode auszuchecken.
Es ist kein kostenloses Tool (obwohl ich glaube, dass sie kostenlose Scans für Open-Source-Projekte anbieten), aber es ist eines der besten statischen Analysetools, die Sie finden werden. Ich habe gehört, dass es in C noch beeindruckender ist als in C++, aber es hat uns bisher geholfen, eine ganze Reihe von Fehlern zu vermeiden.
-
+1 für Schiene, ausgezeichnetes Werkzeug und kostenlos (wie bei Redefreiheit, nicht wie bei Freibier)
– Bortzmeyer
11. Mai 2009 um 8:15 Uhr
-
Es ist in beiden Bedeutungen des Begriffs kostenlos.
– sebnow
22. August 2010 um 14:46 Uhr
-
Dies sollte die beste Antwort sein. Warum kommen diese seltsamen Antworten, die nahelegen, teure kommerzielle Software, dynamische Checker und (WTF?) Nur-C++-Checker an die Spitze?
– Benutzer26742873
26. August 2021 um 5:14 Uhr
Fusselartige Werkzeuge leiden im Allgemeinen unter einem „Fehlalarm“-Problem: Sie melden viel mehr Probleme, als wirklich vorhanden sind. Ist der Anteil an wirklich sinnvollen Warnungen zu gering, lernt der Nutzer, das Tool einfach zu ignorieren. Modernere Tools unternehmen einige Anstrengungen, um sich auf die wahrscheinlichsten/interessantesten Warnungen zu konzentrieren.
Siehe auch Was ist das beste Befehlszeilentool zum Bereinigen von Code und Empfohlene GCC-Warnoptionen für C. Wenn Sie Prototypen ordnungsgemäß in Headern zentralisiert und überall verwendet haben, überprüft dies die dateiübergreifende Überprüfung
lint
tut wird auch vom Compiler gemacht (allerdings eine Datei auf einmal).– Jonathan Leffler
5. März 2012 um 6:30 Uhr
Voting to close as tool rec.
– Ciro Santilli OurBigBook.com
2. Juli 2015 um 12:16 Uhr
PVS-Studio Analyzer ist jetzt für Linux verfügbar – viva64.com/en/b/0441
– Benutzer965097
6. November 2016 um 20:23 Uhr