Cppcheck erlaubt Ihnen, Ihre eigenen Regeldateien zu erstellen, aber ich weiß nicht, wie viel der Funktionalität von cppcheck verfügbar ist.Regelsätze für cppcheck
Arbeitet jemand an einem Set, das die Regelnoder MISRA erzwingen würde?
Cppcheck erlaubt Ihnen, Ihre eigenen Regeldateien zu erstellen, aber ich weiß nicht, wie viel der Funktionalität von cppcheck verfügbar ist.Regelsätze für cppcheck
Arbeitet jemand an einem Set, das die Regelnoder MISRA erzwingen würde?
Sie können nicht alle MISRA/JSF-Regeln und -Direktiven als cppcheck-Regeln implementieren, meist nur die einfachen, die bestimmte C-Sprachen-Features und -Konstrukte einschränken oder stilbezogen sind (einige, die Ihnen einfallen: Leerzeichen vor/nach ./->, # von Argumenten in einer einzelnen Zeile, Verwendung von Unionen, um verschiedene Methoden für den Zugriff auf Speicher bereitzustellen, Anwesenheit von unsigned/signed vor char, etc).
Benutzer Ira Baxter ziemlich genagelt es in einer comment auf eine andere Frage berühren cppcheck: nicht alles kann als Muster dargestellt/vereinfacht werden. Gestützt auf Muster für benutzerdefinierte Regeln macht es schwierig zu behandeln und erkennen höherstufige Probleme, zum Beispiel zu Typen(zB sizeof() auf Typen; Sie müssten analysieren und sammeln Tokens (typedefs, enums) als verwendet eine Typendarstellung), Vererbung(z. B. Klassen, einschließlich abgeleitete, die sowohl als virtuell als auch nicht virtuell verwendet werden) und scope. Diese müssen in cppcheck fest codiert sein (Sie könnten cppcheck immer abzweigen ...)
Haben Sie auf jeden Fall MISRA (oder JSF) -Regeln berührt? Ist das eine Voraussetzung für ein Projekt? Wenn nicht, könnten Sie sich eine Kopie der MISRA-Richtlinien besorgen (Sie haben bereits die JSF-Richtlinien) und überprüfen Sie diejenigen, die Sie mit PCRE-Mustern implementieren können. Wenn es eine Anforderung ist, schlage ich vor, dass Sie in ein kommerzielles Produkt "investieren", das nach MISRA/JSF-Richtlinien sucht und beide Tools verwendet.
Eine letzte Anmerkung: Sie brauchen nicht alle MISRA/JSF-Regeln, und viele Tools lassen einen kleinen Prozentsatz davon aus.
Für Regeln, die über den Mustervergleich hinausgehen, können Sie das Framework in [Clang-Tidy] verwenden (http: //clang.llvm .org/extra/clang-tidy.html). – legalize
@johnwait ein bestimmter Regelsatz war keine Voraussetzung, aber ein formales Regelwerk war (!) Und wenn Sie Regeln haben, können Sie auch eine automatisierte Möglichkeit haben, sie zu überprüfen. Am Ende haben wir unsere eigene Liste geschrieben und Code-Reviews gemacht –
Von was ich sagen kann, durch die Dokumentation, sieht es ziemlich ausgesetzt. http://cppcheck.sourceforge.net/manual.pdf.
DTSCode, danke, aber das Handbuch hat keine vordefinierten "MISRA" - oder "JSF" -Regeln ... – osgx
Möchten Sie das Problem __error__ oder __style__ im Code überprüfen? –
Zum Beispiel ist [MISRA] (http://en.wikipedia.org/wiki/MISRA_C) eine starke Teilmenge der C-Sprache, verbietet möglicherweise unsichere Konstruktionen. Wie sagt Wiki: "Die meisten Richtlinien können mit Tools überprüft werden, die statische Code-Analyse durchführen." aber die dort aufgeführten Werkzeuge sind kommerziell. MISRA wird den Code nicht fehlerfrei machen, aber es ist etwas schwieriger, einige Fehler in MISRA-Bestätigungscode zu schreiben. MISRA-Checking ist meist Style-Checking, aber immer noch nützlich. – osgx