2008-09-15 12 views
10

Ich habe eine Anforderung, eine große Menge von Code MISRA-konform zu machen.
Erste Frage: Kann jemand eine Schätzung geben für die Weitergabe gut geschriebenen Code für das eingebettete System basierend auf Erfahrung. Ich verstehe, dass "gut geschrieben" schlecht definiert und vage ist, also frage ich nach roher Schätzung.
Zweite Frage: Jede Empfehlung für ein Tool, das anpassbar sein kann (d. H. Spezifische Warnungen unterdrücken) und in einer automatischen Build-Umgebung (d. H. Befehlszeilenschnittstelle) verwendet werden kann
Alle anderen nützlichen Vorschläge, die bei dieser Aufgabe helfen können.
Danke Ilya.Misra-Standard für eingebettete Software

+0

Diese Frage hängt sehr davon ab, welche Version von MISRA Sie benötigen. In der letzten Version 2012 fehlt es immer noch an Tool-Unterstützung vieler Unternehmen. – Lundin

Antwort

12

Ich empfehle auch PC-Lint. Wenn Sie Ihren Code mit Visual Studio kompilieren, empfehle ich ein Plug-in 'Visual Lint' von Riverblade. Wenn Sie den Code in Visual Studio nicht kompilieren können, können Sie PC-Lint weiterhin über die Befehlszeile ausführen.

Einige Embedded-System-Compiler bieten MISRA-Konformitätstests als Compiler-Warnungen. Ich benutze den IAR-Compiler für die Arm7/Arm9-Entwicklung. Es bietet eine einfach zu konfigurierende MISRA-Compliance-Checkliste direkt im Compiler-Setup.

Es ist schwierig, eine Faustregel für die Schätzung der Zeit zu finden, die man braucht, um einen gut geschriebenen MISRA-kompatiblen Code zu schreiben. Viel hängt von den vorhandenen Programmiergewohnheiten der Programmierer ab und davon, wie genau sie den MISRA-Regeln folgen.

Grobe Schätzungen:
2 - 3 Tage, um bei der PC-Lint-Nutzung erfahren zu werden.
Initial pass bei der Vornahme bestehender MISRA-kompatibler Codes: 10 bis 25 Prozent der Zeit, die für das Schreiben des Codes benötigt wird.
Keeping Code MISRA-konform: 5 bis 10 Prozent zur Code-Entwicklung hinzugefügt. Die Hälfte dieser Kosten verändert die Gewohnheiten Ihrer Programmierer, den MISRA-Weg zu gehen. Die andere Hälfte sind die zusätzlichen Kosten für Code-Tests und Inspektionen, um die MISRA-Konformität sicherzustellen.

+0

Bitte beachten Sie, dass keines dieser Tools MISRA-C: 2012 unterstützt. Ich fragte kürzlich IAR, ob sie es unterstützten und sie schienen nicht einmal bewusst zu sein, dass es eine neue Version gab ... – Lundin

+0

Davon abgesehen, würde ich empfehlen, ein billiges Werkzeug wie Lint zu bekommen. Es wird Hunderte von falschen Warnungen geben, aber auch die angeblich "state of the art" statischen Analysatoren, die ein Vermögen kosten. Teure Werkzeuge wie LDRA und Klocwork sind genauso fehleranfällig wie Lint, wenn es um MISRA-Prüfungen geht. – Lundin

4

Ich benutze PC Lint für die statische Analyse von C und C++ Code. Es kann so konfiguriert werden, dass es anzeigt, welche MISRA-Regeln verletzt wurden, und es verfügt über eine Befehlszeilenschnittstelle.

8

Code zu machen Misra-konform ist es nicht allzu mühsam - wenn Sie ziemlich gute Programmierpraktiken befolgen. Sie könnten einige der Zeiger-Regeln etwas knifflig finden, wenn der Code, den Sie versuchen zu erfüllen, eine seltsame und wunderbare Zeigerarithmetik aufweist.

Ich würde Gregs Empfehlung für PC Lint wiederholen, aber die Open-Source-Splint ist auch einen Blick wert, obwohl ich zwischen ihnen (und dem Warnsystem des Compilers) schätze, dass Sie immer noch nur 80% abdecken können. der Misra-Regeln - der Rest wird wahrscheinlich Code von Hand überprüft werden müssen.

3

Ich habe ein kommerzielles Werkzeug namens QAC verwendet. Das Tool kann erzwingen MISRA

Es verfügt über eine Befehlszeilenschnittstelle, so dass Sie es einrichten können, um von einer automatisierten Build-Umgebung ausgeführt werden. Die anzuwendenden Regeln sind konfigurierbar, aber erwarten Sie, dass jemand einige Zeit damit verbringt, sie einzustellen. Die MISRA-Durchsetzung ist ziemlich einfach und funktionierte gut genug. Mir wurde gesagt (und das ist nur 3rd Hand), dass dies eines der Werkzeuge ist, die einige Agenturen (wie die FDA) verwenden, um Code zu bewerten. Wie bei den meisten statischen Analysewerkzeugen gibt es Rauschen (False Positives). Das letzte Mal, als ich es benutzt habe, hatte es kein gutes Mittel, um ein falsches Positiv wieder zu markieren/zu stoppen (ohne den Code zu ändern, über den es sich beschwerte).

Ich vermute, ein Junior-Ingenieur wird bis zu einer Woche (4-5 Tage) dauern, um es einzurichten (vorausgesetzt, sie sind entschlossen, es funktioniert wie Sie wollen).

Nebenbei bemerkt, andere kommerzielle statische Analyse-Tools haben wahrscheinlich auch MISRA Durchsetzung. Berichten zufolge (nach ihrem Vertreter), Klocwork tut.

+2

Junioringenieure sollten nicht zugewiesen werden, um den Code für die MISRA-Konformität zu konvertieren. Meiner Erfahrung nach werden sie am Ende sklavisch den Warnungen des Werkzeugs folgen, von denen die meisten falsche sind, unabhängig vom Werkzeug. Sie können mehr Probleme verursachen als sie beheben. – Lundin

3

Wir hatten ein ähnliches Problem der Nachrüstung von Misra-Regeln. Bei einem großen Projekt hatten wir Probleme mit der Codequalität und entschieden uns, MISRA zu verwenden, um die Codequalität zu verbessern.

Wir verwenden den Green Hills Compiler, der die MISRA C Regeln unterstützt. Es gibt auch unabhängige Checker zur Verfügung. Je nachdem, was Sie tun möchten, kann es ein wenig zu töten sein, wenn Sie alle Regeln ändern. Wir haben jeweils eine Regel eingeschaltet, um den Leuten Zeit zu geben, eine begrenzte Anzahl von ähnlichen Problemen zu beheben, ansonsten werden Sie von der Anzahl der Fehler völlig überwältigt.

Da unsere Warnungen vom Compiler und nicht von einem eigenständigen Tool generiert wurden, sehen Sie die Fehler bei der Entwicklung und nicht nur beim Ausführen des Checkers. Als wir uns weiter entwickelten, erhielten wir unseren Code-konform und nicht in einem Big Bang. Dies verhindert auch, dass alte Gewohnheiten den neuen Code verderben und Sie den Code später erneut bearbeiten müssen.

Manchmal ist es schwierig, alten Code zu bekommen, da niemand genau weiß, wie der Code funktioniert. Ich hoffe du hast Unit Tests.

1

Ich weiß, dass dies eine alte Frage ist, aber zum Wohle aller anderen Archäologen (oder Suchenden) ist es wichtig, daran zu denken, dass MISRA Richtlinien liefert, die nicht immer blind befolgt werden sollten.

Ich empfehle, neuen Code mit MISRA zu schreiben; daher wird es viel einfacher sein, konform zu bleiben.

Dies ist jedoch nicht immer möglich - und insbesondere, wenn Sie versuchen, Code umzukehren, um die Richtlinien zu erfüllen. In diesem Fall schlage ich vor, dass Sie sich auf die Erforderlichen Regeln konzentrieren und die Hinweise als Bonus behandeln ... Kosten v Nutzen gilt auch hier!

Denken Sie auch daran, dass es einen Abweichungsprozess gibt - es ist besser, sauberen und wartbaren Code mit einer Abweichung beizubehalten, als einige konforme, aber unleserliche Spaghetti herzustellen.