QA-C++/MISRA
MISRA-C++:2008 wurde am 5. Juni 2008 veröffentlicht. Ziel ist es Regeln für die sichere Anwendung von C++ in kritischen Systemen zu erstellen.
MISRA-C++ begann im Jahr 2005 erste Beratungen mit verschiedenen Tool-Anbietern durchzuführen. Zu den Basisdokumenten zählten der HICPP, ein C++-Programmierstandard von Lockheed Martin (JSF AV++), der MISRA-C Standard, eine Analyse der C++-Schwachstellen und andere Quellen.
Jede Regel sollte dabei aus sicherheitskritischer Perspektive beurteilt werden. Abgewiesene Regeln erfüllten diese Kriterien nicht.
Jede Regel muss klar, eindeutig und logisch definiert sein, wobei Beispiel-Code positive und negative Fälle demonstriert. Neben „Required“ und „Advisory“ gibt es noch eine „Document“-Kategorie für nicht automatisch prüfbare Regeln.
Die wohl beste Möglichkeit, diesen Standard zu untersuchen, ist anhand von Beispielen.
Ein Ziel des Standards ist es, C++-Idiome anstelle von C-Idiomen aufzunehmen.
Dazu zählen bevorzugt die neuen C++-Cast-Befehle und die Vermeidung von Funktions- und Variablenmakros. Der Pre-Prozessor ist dabei besonders interessant. Das Ausnutzen des C++-Sprachschutzes zur Type Conversion durch Funktionsschnittstellen ist eine gute Sicherheitsmaßnahme, Funktionsmakros zu verbieten und dafür Inline-Funktionen zu bevorzugen.
MISRA C++:2008 ist ein umfangreicher Standard der 228 Regeln enthält.
Statische Testwerkzeuge wie QA-C++/MISRA sind notwendig um die Einhaltung dieser Regeln automatisch zu überprüfen.
Damit lässt sich der MISRA-C++:2008-Programmierstandard effizient und sicher einhalten.