Tools zur Code-Analyse (Codeaudit) ?



  • Hallo,

    für ein kleines Softwareunternehmen bin ich auf der Suche nach Programmen, mit deren Hilfe man Code (C++) analysieren kann.
    Es geht darum Schwachstellen (Gefahren) im Code, die keine Fehler darstellen, zu erkennen.
    Das Programm, so stelle ich mir das vor, arbeitet dann so ähnlich wie ein Kompiler, der Warnungen ausgibt. Allerdings sollte es ein Wenig weitergehen, als die Warnungen, die der GNU-Kompiler ausspuckt.

    Ziel ist es, den vorhandenen Code nach Schwachstellen (schlechtem Programmierungsstil) zu analysieren, und dann die Programmierer über die häufigsten schwachstellen zu informieren.
    Nochmal; es geht nicht darum, echte Fehler zu finden (ich gehe davon aus, dass der Code funktioniert), sondern nach potentiellen Gefahren zu suchen.

    Ich wäre jedem dankbar, der da Erfahrungen hat, und mir da was empfehlen könnte.
    Am liebsten wäre den Leuten hier natürlich ein freies Tool, doch auch kommerzielle Programme kommen in Frage, wenn man sie testen kann.
    Als Plattform wird Windows bevorzugt.

    Schönen Gruß,
    Urrghs 🙂



  • valgrind



  • Valgrind macht Codeanalysen? Wäre mir neu...

    Wie wäre es mit lint (für den Anfang)?



  • Danke schon mal für die schnellen Antworten.

    Valgrind gibt es doch nur für Linux, oder? Ich bin hier in der Firma auf nen WindowsRechner beschränkt, und ich habe ehrlich gesagt keine Lust auf diese Linux-Emulatoren.

    Zu lint: Habe mir bereits das Splint runtergeladen (open source Version von lint), doch das unterstützt kein C++ (nur C).

    Habe inzwischen etwas gefunden, was da schon in die Richtung geht (RSM Wizard--leider kommerziell).
    Doch mit ein Paar Sachen hat der auch Probleme.

    Da stellt sich doch nun für mich die Frage: Brauche ich einen "static analyzer" oder einen "dynamic analyzer"?

    Zum Beispiel erkennt der RSM bestimmte feststehende Ausdrücke, zählt öffnende und schliessende klammern, zählt Schlüsselwörter wie "new" und "delete", doch leider stört er sich nicht an solchen Konstrukten:

    double *pf = new double;
    *pf = 3.14;
    delete pf;
    *pf = 2.72;

    Da würde der GNU-Kompiler gleich Alarm rufen....
    Man kann zwar der Konfigurationsdatei eigene (mittels Perl-Audrücken) definierte "Schwachstellen" hinzufügen, doch bin ich mir da erstens nicht sicher, wie weit man das treiben kann, ohne dass es zu kompliziert wird, und zweitens gäbe es ja unzählige Konstrukte, die man da noch ergänzen könnte.

    Also; das kommt wohl nicht in Frage.

    Naja, werde wohl weitersuchen müssen.

    Gruss,
    Urrghs 🙂



  • Ich glaube das brauchbarste Programm ist und bleibt lint.
    Für ein Softwareunternehmen sollte der Preis angemessen sein.
    < 200 Euro (MS-Windows) für eine Einzelplatzlizenz, die sich aber lohnen.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • PC-lint und Flexe-lint kenn ich noch. Die haben immer im CUJ geworben und können auch C++. Allerdings glaube ich dennoch, dass die statische Code-Analyse für C/C++ nicht sehr weit ist.

    habe gerade folgendes gesehen http://en.wikipedia.org/wiki/Flawfinder

    (btw. für C Analyse tools gibt es folgende Liste http://www.spinroot.com/static/ )


Anmelden zum Antworten