Programmierrichtlinien MISRA C:2025 vs. MISRA C:2023 – Wesentliche Neuerungen

Von Sebastian Gerstl 7 min Lesedauer

Anbieter zum Thema

Strengere Regeln für Pointer-Umwandlungen, Multithreading und automatisch generierten Code: MISRA C:2025 bringt entscheidende Neuerungen für sicherheitskritische Embedded-Software – mit Vorteilen für Wartbarkeit, Vorhersagbarkeit und Konformität.

Sicherheitskritische Embedded-Systeme, etwa im Automobilbereich, erfordern maximale Codezuverlässigkeit. MISRA C:2025 liefert dazu präzisere Regeln für Speicherzugriffe, Parallelität und automatisierten Code – für robuste, zertifizierbare Software.(Bild:  visoot - stock.adobe.com (bearbeitet))
Sicherheitskritische Embedded-Systeme, etwa im Automobilbereich, erfordern maximale Codezuverlässigkeit. MISRA C:2025 liefert dazu präzisere Regeln für Speicherzugriffe, Parallelität und automatisierten Code – für robuste, zertifizierbare Software.
(Bild: visoot - stock.adobe.com (bearbeitet))

Die MISRA C:2025 Richtlinien sind die neueste Entwicklung, um den sicheren und zuverlässigen Einsatz der Programmiersprache C in kritischen Systemen zu sichern. Von der Software für die Automobilindustrie bis hin zu Steuerungen für die Luft- und Raumfahrt – Branchen, die auf embedded Systeme angewiesen sind, benötigen strenge Regeln, damit sie nicht ausfallen oder Schwachstellen haben. MISRA C:2025 baut auf jahrzehntelanger Erfahrung auf und enthält aktualisierte Richtlinien und Regeln, die auf die aktuellen Herausforderungen zugeschnitten sind. MISRA C:2025 wurde gemeinsam von Branchenführern, akademischen Einrichtungen und Tool-Anbietern wie Parasoft entwickelt und spiegelt ein tiefes kollektives Verständnis von Software-Zuverlässigkeit wider.

MISRA C:2025 verstehen

Die Version 2025 erklärt, worauf es ankommt: Vorhersagbarkeit, Sicherheit und Wartbarkeit. Um die Vorhersagbarkeit zu gewährleisten, schränken die aktualisierten Richtlinien mehrdeutige oder implementierungsabhängige Sprachfunktionen ein und stellen so sicher, dass der Code auf verschiedenen Compilern und Plattformen gleich funktioniert. Durch die gezielte Adressierung von Schwachstellen, um ausnutzbare Schwachstellen zu reduzieren, wird die Sicherheit wird verbessert. Der Standard erleichtert die Wartbarkeit des Codes, indem er eine klare Struktur und Dokumentation vorschreibt. Darüber hinaus optimiert er das Debugging und vereinfacht ein langfristig effizientes Code-Management. Zusammengenommen stärken diese Verbesserungen die Rolle von MISRA C bei der Förderung robuster, sicherer und nachhaltiger Softwareentwicklungspraktiken.

Warum ein Upgrade?

MISRA C:2023 ist gut für die Entwicklung sicherheitskritischer Systeme - aber die Version 2025 geht noch einen Schritt weiter und bringt wichtige Verbesserungen, die auf die aktuellen Herausforderungen in der Softwareentwicklung zugeschnitten sind. Da embedded Systeme zunehmend Multithreading nutzen, schließt MISRA C:2025 Lücken von älteren Versionen. Diese Updates helfen, das Risiko von Race Conditions, Deadlocks und undefiniertem Verhalten, insbesondere in Echtzeitumgebungen, zu reduzieren.

Wichtige Neuerungen und Funktionen

Unter Beibehaltung der Grundprinzipien früherer Versionen hat MISRA C:2025 mehrere wichtige Aktualisierungen:

  • 4 neue Regeln
  • 2 Regeln gelöscht
  • 1 Nicht angewandte Regel
  • 3 Neu nummerierte Richtlinien
  • 13 Geänderte Richtlinien
Richtlinien-Kategorien
Anzahl der Richtlinien
Richtlinien (gelten für alle)
22
Verbindliche Regeln
(unbedingt einzuhalten)
22
Erforderliche Regeln
(sollten eingehalten werden)
140
Empfehlende Regeln
(Einhaltung sinnvoll+hilfreich)
38
Nicht anwendbare Regeln
1
Insgesamt
224

Verwendung von nicht aktiven Verbundelementen

Regel 19.3: Ein Verbundelement darf nicht verwendet werden, wenn es nicht vorher festgelegt wurde.

Anwendung der Regel 19.3 von MISRA C:2025 im praktischen Kontext.(Bild:  Parasoft)
Anwendung der Regel 19.3 von MISRA C:2025 im praktischen Kontext.
(Bild: Parasoft)

Diese Regel verhindert das Aufrufen eines Verbundelements, das nicht als letztes geschrieben wurde und verhindert dadurch undefiniertes Verhalten durch Type Punning. Die neue Version MISRA C:2025 verbietet das Lesen inaktiver Verbundelemente. Es gibt aber Ausnahmen für den Zugriff auf Byte-Ebene. Zum Beispiel darf man auf die Bytes eines Verbundelements zugreifen, wenn man Low-Level-Operationen ausführt.

Konvertierungen zwischen Pointern und Ganzzahlen

Regel 11.4: Man sollte keine Konvertierung zwischen einem Pointer auf ein Objekt und einem Ganzzahltyp durchführen.

Die vormals nur „empfohlene" Regel zur Konvertierung zwischen Pointern und Ganzzahlen ist in MISRA C:2025 nun „erforderlich".(Bild:  Parasoft)
Die vormals nur „empfohlene" Regel zur Konvertierung zwischen Pointern und Ganzzahlen ist in MISRA C:2025 nun „erforderlich".
(Bild: Parasoft)

Die neue Version von MISRA C:2025 ändert Regel von „empfohlen" auf „erforderlich". Pointer und Ganzzahlen können je nach Architektur unterschiedlich groß sein (z. B. 32-Bit- vs. 64-Bit-Systeme). Wird ein Pointer in einer zu kleinen Ganzzahl gespeichert (z. B. in einer int), verkürzt sich die Adresse. Das führt zu undefiniertem Verhalten.

Ausnahmefall nach MISRA C:2025.(Bild:  Parasoft)
Ausnahmefall nach MISRA C:2025.
(Bild: Parasoft)

Eine Ausnahme („compliant by excemption") bilden die Varianten intptr_t/uintptr_t. Sie sind so ausgelegt, dass sie beliebige Objektzeiger aufnehmen können. In MISRA C:2023 galt ein solcher Sonderfall noch als „non-compliant".

Verwendung von nicht-eindeutigen Include-Guard-Identifikatoren

Richtlinie 4.10: Man muss sicherstellen, dass der Inhalt einer Header-Datei nicht mehrmals eingebunden wird.

Beispiel der MISRA C:2025-Direktive 4.10 in der Anwendung.(Bild:  Parasoft)
Beispiel der MISRA C:2025-Direktive 4.10 in der Anwendung.
(Bild: Parasoft)

MISRA C:2025 ist strenger und sorgt für eine robuste Verwaltung von Header-Dateien. Dafür sind global eindeutige Guard-Identifikatoren vorgeschrieben. Entwickler können das Risiko von Fehlern bei der Kompilierung und die Sicherheit ihrer Codes erhöhen, wenn sie bestimmte Regeln für Namen verwenden. Es gibt aber eine Ausnahme: intptr_t/uintptr_t kann beliebige Objektzeiger aufnehmen.

  • MISRA C:2023 – Unklar, ob konform oder nicht-konform
  • MISRA C:2025 – Nicht-konform

Sofortige Umwandlung des zugewiesenen Speichers

Regel 11.5: Eine Umwandlung von einem Zeiger auf void in einen Zeiger auf ein Objekt sollte nicht durchgeführt werden.

Regel in MISRA C:2025 zur Umwandlung bestimmter Objektzeiger.(Bild:  Parasoft)
Regel in MISRA C:2025 zur Umwandlung bestimmter Objektzeiger.
(Bild: Parasoft)

MISRA C:2025 sorgt dafür, dass bestimmte Objektzeiger nicht mehr in void* (generische Zeiger) umgewandelt werden können. Das erhöht die Typsicherheit in sicherheitskritischen Systemen, und verhindert, dass Daten falsch gelesen werden, dass sie als andere Typen gelesen werden, und dass der Puffer überläuft. MISRA C:2025 erlaubt, den neu zugewiesenen Speicherzeiger sofort in einen Zeiger auf einen Objekttyp umzuwandeln.

Beenden von Switch-Klauseln

Regel 16.3: Eine unbeschränkte Break-Anweisung muss jede Switch-Klausel beenden.

Vergleich der Anwendung der Regel in MISRA C:2023 (links) gegenüber MISRA C:2025 (rechts).(Bild:  Parasoft)
Vergleich der Anwendung der Regel in MISRA C:2023 (links) gegenüber MISRA C:2025 (rechts).
(Bild: Parasoft)

Jede Case- oder Default-Klausel in einer Switch-Anweisung beendet den Ausführungsfluss explizit. Fall-Through kann zu Fehlern im Code führen. Das ist besonders in sicherheitskritischen Systemen ein Problem, denn dort ist die Vorhersagbarkeit des Codes von größter Bedeutung. MISRA C:2025 erlaubt aber auch andere Arten der Beendigung (z.B. return, abort() oder exit()), aber unbeabsichtigtes Fall-Through ist weiterhin verboten. Das macht es flexibler, aber sicherer - und entspricht der tatsächlichen Programmierpraxis in kritischen Systemen.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Übernahme und Verwendung

1.5.3: Automatisch generierter Code

Mit diesem wichtigen Update wird erklärt, wie die MISRA C:2025-Richtlinien für automatisch generierten Code angewendet werden (z.B. durch modellbasierte Designtools wie Simulink, MATLAB oder benutzerdefinierte Codegeneratoren). Dieser Abschnitt ist besonders wichtig für Branchen, die automatisch generierten Code brauchen, beispielsweise die Automobilindustrie und die Luft- und Raumfahrt. So können sie die Sicherheitsstandards wie ISO 26262 oder IEC 61508 einhalten. Automatisch generierter Code muss daher genauso wie manuell geschriebener Code mit MISRA C:2025 konform sein.

Der automatisch generierte Code wird jetzt so definiert:

  • [...] Ein qualifizierter Codegenerator erzeugt C-Code. Dieser übersetzt ein Eingabeprogramm in eine andere Programmiersprache. Es wird eine vollständige Bedeutungssprache zwischen den Sprachkonstrukten der Eingabesprache und der Sprache C hergestellt
  • und NICHT [...] Codefragmente, die durch Zufallsprozesse, statistische Sprachmodelle oder maschinelles Lernen erzeugt werden.

Es gibt einen Unterschied zu KI-Modellen, die zur Codegenerierung verwendet werden, da sie spezifische Risiken im Vergleich zu herkömmlichen Codegeneratoren bergen. Beispielsweise kann die KI keine inkonsistenten oder unsicheren Codemuster erzeugen (z. B. unsichere Zeigerarithmetik, Magische Zahlen). Anders als qualifizierte Tools (z. B. Simulink) können KI-Modelle die MISRA-Regeln nicht standardmäßig durchsetzen. KI-generierter Code kann nur dann in MISRA C:2025-Projekten verwendet werden, wenn er die gleichen Prüfungen durchläuft wie von Menschen geschriebener Code. Wenn es Abweichungen gibt, muss man sie genau dokumentieren und begründen. Menschliche Experten müssen die Sicherheit und Korrektheit überprüfen.

Warum Konformität wichtig ist

Die Konformität mit MISRA C:2025 ist ein Muss für Unternehmen, die strenge funktionale Sicherheitsstandards wie ISO 26262 (Automobilindustrie), IEC 62304 (Medizintechnik), DO-178C (Luftfahrt) und andere erfüllen wollen.

Wenn man sich an diese Regeln hält, muss man weniger Geld für die Zertifizierung ausgeben, weil man dann zeigt, dass man sich an die Regeln für gutes Programmieren hält. Der Code lässt sich besser auf verschiedenen Plattformen und mit verschiedenen Compilern verwenden. Es ist möglich, Analyse-Tools wie die von Parasoft im Entwicklungszyklus einzusetzen, um Probleme früh zu erkennen.

Deutschlands Leitkongress der Embedded-Softwarebranche

Bewerben Sie sich als Sprecher

Embedded Software Engineering Kongress

Gestalten Sie den ESE Kongress aktiv mit! Es gibt viele gute Gründe, warum Sie sich mit Ihrem eigenen Vortrag oder Seminar am Programm beteiligen sollten. Teilen Sie Ihr Wissen, Ihre Erfahrung und Ihre Erkenntnisse mit Ihren Branchenkollegen. Nutzen Sie den ESE Kongress als bewährte Plattform, um sich als Software-Experte einen Namen zu machen und Ihren Marktwert zu steigern, und präsentieren Sie Ihre Lösungen einem hochwertigen Fachpublikum.

MISRA C:2025 in den Entwicklungsprozess implementieren

Um MISRA C:2025 erfolgreich in den Workflow der Softwareentwicklung zu integrieren, sollte man die Richtlinien schon zu Beginn des Projekts einführen, um unnötige Kosten zu vermeiden.

  • Automatisierte Tools: Mit diesen Tools wird die Einhaltung der Richtlinien automatisch überprüft. Beispielsweise hilft der GenAI Agent for VS Code von Parasoft Entwicklern dabei, Code-Verletzungen beheben. Diese KI-basierte Erweiterung ist in Microsoft Copilot integriert und arbeitet mit dem statischen Analysetool von Parasoft zusammen. So erklärt sie Verstöße im Kontext und liefert detaillierte Einblicke in die Übereinstimmung mit MISRA C:2025 und den Richtlinien des Unternehmens. Außerdem gibt sie Empfehlungen für Korrekturen, die auf Branchenstandards zugeschnitten sind, und automatisiert Korrekturen. Indem sie Codeänderungen direkt in der IDE vorschlägt, entfällt das manuelle Wechseln zwischen verschiedenen Kontexten. Dieser geschlossene Workflow reduziert die Entwicklungszeit um bis zu 30% und ermöglicht es Teams, konformen, qualitativ hochwertigen Code direkt an der Quelle zu erstellen. Führende Unternehmen, darunter ein großer Automobilhersteller und ein weltweit tätiges Halbleiterunternehmen, testen das Tool bereits, um MISRA C:2025 schneller einzuführen.
  • Entwicklungsteams schulen: Entwickler müssen über die Gründe für die MISRA-Regeln informiert werden, um die Einhaltung zu fördern und Widerstände zu minimieren.
  • Abweichungen dokumentieren: Notwendige Abweichungen von den MISRA-Compliance-Richtlinien müssen streng begründet werden.

MISRA C:2025 ist nicht nur eine Checkliste für die Einhaltung von Vorschriften. Es ist ein strategischer Wegweiser für Branchen, die sich in einer Zeit beispielloser technologischer Komplexität zurechtfinden müssen. Da immer mehr Industriezweige autonome Systeme und KI-gesteuerte Tools wie den GenAI Agent for VS Code von Parasoft einsetzen, sind die Anforderungen des Standards an Sicherheit und Zuverlässigkeit nicht mehr optional, sondern existenziell. Lösungen, die KI-gestützte Diagnosen mit nahtloser IDE-Integration kombinieren (wie bei Parasoft), zeigen, wie Innovationen die Konformität optimieren und gleichzeitig die Arbeitsabläufe angesichts des rasanten Wandels zukunftssicher machen können.

Durch die Ausrichtung auf neue Paradigmen wie deterministische Parallelität, speichersichere Architekturen und überprüfbare Traceability schließt der Standard die Lücke zwischen alten Praktiken und zukunftssicherer Technologie. Die gemeinsame Entwicklung durch Wissenschaftler, führenden Unternehmen und Tool-Innovatoren stellt sicher, dass er in einer Welt mit immer mehr Sicherheitslücken und strengeren Vorschriften relevant bleibt.

Die Einführung von MISRA C:2025 ist eine Investition in die Anpassungsfähigkeit von Unternehmen. Sie schützt vor Veralterung, beschleunigt die Einhaltung sich entwickelnder Sicherheitszertifizierungen und fördert das Vertrauen in einer zunehmend von Software abhängigen Welt. Während die Grenzen zwischen physischen und digitalen Systemen verschwimmen, bleibt MISRA C ein Eckpfeiler für die Entwicklung von Code, der nicht nur funktioniert, sondern auch Bestand hat.  (sg)

* Ricardo Camacho ist Director of Safety & Security Compliance bei Parasoft

(ID:50405732)