Suche gute statische Codeanalyse (C++)



  • Gibt es ein kostenloses Tool zur statischen Codeanalyse, das auch was taugt? Nach mehreren Empfehlungen habe ich mir cppcheck geladen aber das ist nur eine reine Zeitverschwendung. Gründe:

    • Syntax-Errors bei TMP-Code
    • Iteratoren werden gänzlich nicht verstanden
    • SFINAE wird nicht verstanden ( sizeof -Fehler)
    • Namensauflösung funktioniert schlecht bis gar nicht und produziert Fehler die keine sind
    • Exceptionsicherheit wird nicht verstanden

    Bei hunderten false positive Meldungen war eine einzige sinnvolle dabei (wäre mir aber aufgefallen sobald ich die betroffene Funktion aufgerufen hätte weil eine Exception geflogen wäre).

    Gibt's bessere alternativen die vll. auf Compiler-Frontends wie clang aufbauen und somit C++ auch verstehen? Es wäre schon hilfreich wenn jemand der C++ kann mit der Präzision einer Maschine drüberschauen könnte.



  • Interessiert mich auch. Ich habe leider auch kaum Erfahrung mit solchen Tools außer cppcheck. cppcheck gab mir damals aber keine false positives. Es spuckte GAR nichts aus und fand meinen Code okay.

    Der Herr Carmack hatte sich damit auch mal beschäftigt und kam zu dem Schluss, wenn ich mich richtig erinnere, dass es sich lohnt, mehr als ein Tool zu benutzen, weil wohl jedes Tool irgendwelche Fehler erkennen kann, die ein anderes nicht findet.

    In der Kategorie "kostenlos" bleibt aber nicht ganz so viel übrig: Clang (hat einen static analyzer mit drin). AFAIK hat Visual Studio auch sowas integriert, was man einschalten kann (habe beides aber noch nie getestet).



  • http://de.wikipedia.org/wiki/Liste_von_Werkzeugen_zur_statischen_Codeanalyse

    Free ist schwer...
    Non plus ultra ist wohl Lint. Kostet aber ein bisschen. Ansonsten selbst drauf achten was man da programmiert:-P



  • bis jetzt hab ich damit noch nie wichtige bugs identifiziert. Noch schlimmer sind Projekt wo grundsätzlich mit -wAll kompiliert wird und man vor lauter überflüssigen Warnungen nichts mehr zu sehen bekommt (fixen will die dann auch keiner)



  • unbrauchbar schrieb:

    bis jetzt hab ich damit noch nie wichtige bugs identifiziert.

    Geht mir auch so. Die Dinger sind nur für Anfänger. Erst die Compilerwarnungen schön nicht anmachen, und dann vom Codeprüfer gesagt kriegen, daß man Vergleiche mit == statt = machen sollte. Manche finden damit sogar Speicherlöcher in C/C++-Code. 🤡 🤡 🤡



  • unbrauchbar schrieb:

    bis jetzt hab ich damit noch nie wichtige bugs identifiziert. Noch schlimmer sind Projekt wo grundsätzlich mit -wAll kompiliert wird und man vor lauter überflüssigen Warnungen nichts mehr zu sehen bekommt (fixen will die dann auch keiner)

    Wobei das eindeutig der Faulheit und nicht -wAll geschuldet ist.

    Ich habe irgendwann hier auch die Warnstufe auf Maximum gesetzt, nachdem ich nachweislich einige Fehler identifizieren konnte die an ignorierten Warnungen lagen. Natürlich war das dann erst einmal eine enorme Fleißarbeit (ich glaube 2-3 Arbeitstage) um die 2000-3000 Warnungen zu eliminieren (und dabei habe ich auch einige Fehler gefunden und korrigiert).



  • Naja, ich denke schon, dass solche Tools sehr wertvoll sind. Beispielsweise zeigt der PVS Studio Autor in diversen Blogposts, was er für Fehler in Open Source Software findet mit seinem Tool. Da sind schon coole Sachen bei, u.a. auch viele Copy/Paste Fehler, die sich ja schon mal gerne "einschleichen".

    Aber wenn man sich die Doku zu cppcheck und CSA (Clang Static Analyzer) anguckt, sieht das leider dünn mit Features aus... Ich meine, diese Bug Patterns kann man ja an einer Hand abzählen (wenn man ObjectiveC-spezifischen Kram mal ignoriert).


Anmelden zum Antworten