Auswahl eines Tools zur statischen Codeanalyse [closed]

Lesezeit: 4 Minuten

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.

  • 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

Benutzeravatar von svec
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

Benutzeravatar von Matthew Schinckel
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

Benutzeravatar von Kristof Provost
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.

1415960cookie-checkAuswahl eines Tools zur statischen Codeanalyse [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy