Statische Code-Analyse und Verifikation

PC-lint Plus erkennt Fehler bereits vor Beginn der Tests

Bei der statischen Analyse wird der Quellcode untersucht, ohne ihn auszuführen. Dabei werden Fehler bereits an der Stelle identifiziert, an der sie entstehen, und nicht erst, wenn sie während der Test- oder Integrationsphase auftauchen. Bei der Entwicklung mit Embedded-C und C++ in regulierten Branchen verhindert die kontinuierliche Durchführung einer statischen Analyse ab Projektbeginn, dass sich Fehlerklassen in der Codebasis ansammeln, und reduziert die Anzahl der Befunde, die vor der Zertifizierung behoben werden müssen.

Was die statische Analyse leistet

Statische Analysewerkzeuge arbeiten sich systematisch durch den Quellcode und wenden dabei einen Regelwerk an, um Probleme zu identifizieren, die allein durch Tests nur schwer oder gar nicht zu finden wären. Im Gegensatz zu dynamischen Tests variieren die Ergebnisse nicht in Abhängigkeit von Testdaten oder Laufzeitbedingungen: Derselbe Code liefert bei jedem Durchlauf dieselben Ergebnisse.

Zu den wichtigsten Techniken gehören:

  • Mustererkennung basierend auf Codierrichtlinien, um Verstöße und fragwürdige Konstrukte zu kennzeichnen
  • Wertverfolgung zur Überwachung von Variablenwerten über Ausführungswege hinweg und zur Erkennung ungültiger Zustände
  • Grenzwertprüfung, um sicherzustellen, dass Variablen innerhalb der erwarteten Wertebereiche bleiben
  • Abstrakte Interpretation des Kontroll- und Datenflusses, um Abhängigkeiten und Erreichbarkeitsprobleme zu identifizieren.

Was die statische Analyse aufdeckt

Die Fehlerklassen, die durch statische Analyse zuverlässig erkannt werden, beinhalten unter anderem:

  • Zugriffe auf Null-Pointer und Array-Zugriffe außerhalb des zulässigen Bereichs
  • Nicht initialisierte Variablen und unzulässige Typkonvertierungen
  • Verstöße gegen Programmierrichtlinien einschließlich MISRA C:2025, MISRA C:2023, MISRA C++:2023, AUTOSAR C++ und CERT-C
  • Sicherheitsschwachstellen, die CWE-Klassifikationen zugeordnet sind, einschließlich der CWE Top 25 und der Top 10 KEV-Liste
  • Nicht erreichbarer Code, Logikfehler und Ressourcenlecks
  • Nebenläufigkeitsprobleme, einschließlich Race-Conditions und fehlerhafter Ausführungsreihenfolgen

PC-lint Plus

PC-lint Plus ist das statische Analyse-Tool von Vector für C- und C++-Quellcode. Es ist von exida nach IEC 61508 (SIL 1–3), ISO 26262 (ASIL A–D), IEC 62304 und EN 50716 zertifiziert und als CWE-kompatibel anerkannt.

PC-lint Plus unterstützt MISRA C:2025, MISRA C:2023, MISRA C:2012 (Ergänzungen 1–4), MISRA C++:2023, MISRA C++:2008, AUTOSAR C++, CERT-C und CWE von Haus aus. Es lässt sich in nahezu jede Build-Pipeline und Entwicklungsumgebung integrieren, läuft lokal ohne Telemetrie oder Internetverbindung und skaliert mithilfe paralleler Verarbeitung effizient über große Codebasen hinweg. Die Unterdrückungsverwaltung ist vollständig nachvollziehbar: Jede Unterdrückung wird dokumentiert, abfragebasierte Ausnahmen können auf Regelebene definiert werden, und nicht verwendete Unterdrückungen werden automatisch gekennzeichnet.