Wie kommt es, dass Misra C Checker ein so prestigeträchtiges Werkzeug ist? [geschlossen]

Professionelle Compiler wie IAR Embedded Workbench bieten Misra C Checker nur in ihren Premium-Versionen an. Ist Misra C Checker nicht ein Style Checker für Elemente wie Einrückungen, Variablennamen? Warum scheint es so begehrt zu sein?

Vermutlich weil MISRA C ein kostenpflichtiger Standard ist, werden die Leute, die diese Prüfung integrieren, wahrscheinlich eine Lizenzgebühr zahlen müssen.
Wenn Sie an Automotive-Software arbeiten, ist MISRA-konform ein Muss
@TomCarpenter Es gibt keine solche Gebühr. Leider kann jeder Landstreicher seinen eigenen MISRA-C-Checker herstellen. Ich wünschte, es gäbe so etwas wie eine Tool-Zertifizierung, denn 95 % aller MISRA-Checker auf dem Markt sind unglaublich fehlerhaft.

Antworten (3)

Ein MISRA-C Checker ist viel mehr als nur ein Style Checker; es erzwingt eine Reihe von Softwareentwicklungsrichtlinien für die Programmiersprache C, die von MISRA (Motor Industry Software Reliability Association im Vereinigten Königreich) entwickelt wurde.

Diese Richtlinien sollen die Sicherheit, Portabilität und Zuverlässigkeit von Code in Bezug auf die Verwendung von ISO C in eingebetteten Systemen erleichtern.

Es gab drei Versionen; MISRA-C 1998, 2004 und 2012. Letzteres unterstützt C99 und enthält 143 Regeln und 16 Richtlinien, die jeweils als obligatorisch, erforderlich oder beratend eingestuft sind. Damit eine Firmware den Anspruch erheben kann, MISRA-C-konform zu sein, müssen alle obligatorischen Regeln erfüllt und alle erforderlichen Regeln und Richtlinien entweder erfüllt oder als formale Abweichung dokumentiert werden.

Die Regeln sind Dinge wie:

  • Vermeiden Sie mögliche Compiler- oder Host-Unterschiede, z. B. kann die Größe einer C-Ganzzahl variieren, aber ein INT16 ist immer 16 Bit.
  • Vermeiden Sie die Verwendung von fehleranfälligen Funktionen und Konstrukten, beispielsweise kann malloc fehlschlagen.
  • Beschränken Sie potenziell gefährliche Praktiken wie nicht konstante Zeiger auf Funktionen.
  • Erstellen Sie wartbaren Code, indem Sie beispielsweise Namenskonventionen und Kommentare verwenden. (Dies wäre Teil der Stilprüfung, auf die sich das OP bezieht.)

In gewisser Weise kann MISRA-C als sichere Untergruppe von C betrachtet werden. Die MISRA-C-Richtlinien gelten nicht nur für Fahrzeug-Firmware, sondern auch für Firmware in anderen einsatzkritischen Bereichen wie Luft- und Raumfahrt, Nukleartechnik und Medizin.

Die MISRA-C-Konformitätsprüfung wird von einer Reihe eigenständiger Tools von Drittanbietern (wie PC-Lint und vielen anderen) und Compilern (wie Green Hills Software und IAR) durchgeführt. Um die MISRA-C-Konformitätsprüfung durchzuführen, müssen sowohl eine statische als auch eine dynamische Codeanalyse durchgeführt werden. Insbesondere letzteres ist ziemlich komplex und ist wahrscheinlich der Grund, warum Programme mit MISRA-C-Konformitätsprüfung einen Premiumpreis haben. Es spricht auch einen ziemlich begrenzten Markt an, was auch den Preis in die Höhe treibt.

Es gibt auch eine Reihe von MISRA-Regeln für C++.

Um die Frage direkter zu beantworten, MISRA-Konformität ist oft erforderlich, wenn Sie Software für sicherheitskritische Anwendungen wie Automotive schreiben. Wenn Sie sicherheitskritische Software schreiben, bedeutet dies, dass Sie ein relativ anspruchsvoller Benutzer sind, der es sich leisten kann, mehr für Entwicklungstools zu bezahlen. Dies ist eine Standard-Marktsegmentierung, genau wie Pin-Count-Limits bei verschiedenen Versionen derselben Schaltplan-Erfassungssoftware.

Der Zweck der ursprünglichen Frage ist unklar: Hilft es dem Fragesteller, die Gründe für die Erhebung von Geld für MISRA-C-Checker zu kennen? Oder ist die Absicht wirklich zu fragen: Gibt es eine kostengünstigere Alternative? Diese Antwort richtet sich an letzteres. Wenn der Fragesteller Ersteres klarstellt, werde ich diese Antwort löschen.

Wenn Sie an Software mit hoher Integrität interessiert sind, aber nicht gezwungen sind, C zu verwenden, gibt es Alternativen.

SPARK ist strenger als MISRA-C.

Die Tatsache, dass es auf Ada basiert, trägt zur Zuverlässigkeit der Software bei, da die Basissprache weniger Grauzonen, undefiniertes oder mehrdeutiges Verhalten zulässt. Das starke Typsystem hilft sehr auf eine Weise, die zunächst schwer zu verstehen ist. Beispielsweise wird das berühmte Pufferüberlaufproblem zu einem einfachen Typfehler, der immer abgefangen werden kann, bevor er auftritt, und in vielen Fällen vom Compiler eliminiert werden kann.

SPARK baut auf der grundlegenden Ada-Sprache auf, indem es beweist, dass der Pufferüberlauf nicht auftritt, sogar vor der Kompilierung.

Es ist keine Magie; wie MISRA-C beinhaltet es Einschränkungen beim Programmierstil und mehr Arbeit im Vorfeld, aber es gibt Hinweise darauf, dass die Vorabkosten später im Entwicklungsprozess mehr Kosten sparen.

Wenn Sie mit einer GPL-Lizenz leben können, gibt es eine GPL-Edition .

Viele weitere Informationen von einem zufriedenen Benutzer