--- doc-id: SLM-EPB-MISRA-COMP-001 version: 1.0 status: Freigegeben datum: 2026-05-12 --- # MISRA C:2012 Compliance Statement | Feld | Wert | |--------------|----------------------------------------| | Projekt | demo-epb | | Dokument-ID | SLM-EPB-MISRA-COMP-001 | | Datum | 2026-05-12 | | Standard | MISRA C:2012 (inkl. Amendment 1) | | Compiler | GCC 11.2 (Linux CI) / GCC 16.1 (Win) | | Checker | Cppcheck 2.7+ mit `--addon=misra` | --- ## 1. Zusammenfassung Der Quellcode von demo-epb wurde gegen MISRA C:2012 geprueft. Alle **Required** und **Mandatory** Regeln werden eingehalten, mit Ausnahme von einer dokumentierten Deviation (siehe MISRA-REC-001). **Compliance-Erklaerung:** demo-epb v1.0 ist **MISRA C:2012 compliant** unter Beruecksichtigung dokumentierter Deviation Records. ## 2. Geltungsbereich | Modul | MISRA-konform geprueft | |----------------------|-----------------------------| | `src/switch_debouncer.{c,h}` | Ja | | `src/actuator_driver.{c,h}` | Ja | | `src/apply_controller.{c,h}` | Ja | | `src/safety_manager.{c,h}` | Ja | | `src/epb_types.h` | Ja | | `src/stubs/*.h` | Header-only, keine MISRA-relevanten Implementierungen | | `tests/**/*` | Nicht im Geltungsbereich (Test-Code) | | `tools/**/*` | Nicht im Geltungsbereich (Python-Skripte) | ## 3. Regel-Aktivierung Cppcheck MISRA-Addon prueft die folgenden Regel-Kategorien: | Kategorie | Anzahl | Aktivierung im Projekt | |-----------|--------|--------------------------------| | Mandatory | 9 | Alle aktiviert, Verletzung blockt Build | | Required | 119 | Alle aktiviert, Verletzung blockt Build | | Advisory | 47 | Aktiviert mit Warning-Level, Deviations zulaessig per Record | ## 4. Compliance-Status pro Regel-Kategorie ### 4.1 Mandatory Rules (9) | Rule | Status | |-------------|------------| | R 9.1, R 9.2, R 9.3 | Compliant | | R 13.6, R 17.3, R 17.4 | Compliant | | R 19.1, R 21.13, R 21.17 | Compliant | | R 21.18, R 21.19, R 21.20 | Compliant | **Mandatory Status: 100 % Compliant.** ### 4.2 Required Rules Gesamt: 119 Required Rules. Verletzungen: **0**. Top-relevante Rules fuer dieses Projekt: | Rule | Beschreibung | Status | |---------|----------------------------------------------------------|----------| | R 8.1 | Type specifier shall be explicit | Compliant | | R 8.2 | Function parameters shall be explicitly named | Compliant | | R 8.4 | Compatible declaration shall be visible | Compliant | | R 8.7 | Functions shall not have external linkage if used in one unit | Compliant | | R 14.1 | Loop counter shall not have essentially floating type | Compliant | | R 14.4 | Controlling expression shall have essentially Boolean type | Compliant | | R 15.4 | At most one break or goto per loop | Compliant | | R 17.7 | Return value of non-void function shall be used | Compliant (oder explizit `(void)`) | | R 21.3 | No dynamic memory allocation (malloc/free) | Compliant (keine Heap-Nutzung) | | R 21.4 | No setjmp/longjmp | Compliant | ### 4.3 Advisory Rules 47 Advisory Rules. Verletzungen werden via MISRA Deviation Records dokumentiert. | Record-ID | Rule | Datei | Begruendung-Auszug | |-------------------|---------|-------------------------------|-----------------------------| | MISRA-REC-001 | R 15.5 | `src/apply_controller.c:64` | Early-Exit fuer NULL-Check | **Advisory Status: 1 Deviation Record, dokumentiert.** ## 5. Pruef-Pipeline ```bash cppcheck \ --enable=all \ --inconclusive \ --error-exitcode=1 \ --suppress=missingIncludeSystem \ --suppress=unusedFunction \ --addon=misra \ -I src src ``` Pruefung erfolgt: - Lokal vor jedem Commit (empfohlen) - Automatisch in CI bei jedem Push und PR - Vor jedem Release (Tag-Push triggert release.yml) ## 6. Deviation Permits (projektweit) Keine projektweiten Permits aktiv. ## 7. Re-Audit-Trigger Diese Compliance-Erklaerung muss bei folgenden Aenderungen neu erstellt werden: - Compiler-Wechsel (z.B. GCC -> Clang) - Major-Update von Cppcheck oder MISRA-Addon - Neue Quelldateien ausserhalb `src/` - MISRA-Standard-Update (z.B. C:2025 Release) ## 8. Aenderungshistorie | Version | Datum | Aenderung | Autor | |---------|-------------|-------------------------|----------------| | 1.0 | 2026-05-12 | Erstfreigabe v1.0 | S. Lohmaier |