c54a9c55d2
Validate / build-test (macos-latest) (push) Failing after 4s
Validate / build-test (windows-latest) (push) Failing after 15s
Validate / build-test (ubuntu-latest) (push) Failing after 15s
Validate / reports (push) Has been skipped
Release / release (push) Successful in 50s
Neue Word-Dokumente (alle aus Markdown via pandoc): Safety (docs/safety/): - HARA.docx — Hazard Analysis & Risk Assessment, leitet ASIL-D ab - Safety-Case.docx — Argumentation pro Safety Goal (GSN-Stil) - FMEDA.docx — Pro-Komponente Failure Modes + Diagnostic Coverage - MISRA-Compliance-Statement.docx — formaler MISRA-Nachweis - Verification-Report.docx — V-Modell rechte Seite Zusammenfassung - Tool-Qualification-Cppcheck.docx — Tool-Qual (TCL2/ASIL-D) Manuals (docs/manuals/): - User-Manual.docx — Fahrerhandbuch-Auszug - Service-Manual.docx — Werkstatt-Doku mit UDS-DTCs CI-Erweiterungen: - Doxyfile + `make docs` — API-Dokumentation aus src/ - tools/generate_test_report.py + `make test-report` — Test-Summary HTML - validate.yml: Doxygen + Test-Report als CI-Artefakte - release.yml: alle Word-Docs + Engineering-Artefakte ins Release-Bundle README: - Komplette Tour durch alle Artefakte - Repo-Struktur-Diagramm aktualisiert
131 lines
4.8 KiB
Markdown
131 lines
4.8 KiB
Markdown
---
|
|
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 |
|