Empfohlenes Webinar: KI-gestütztes API-Testing: Ein No-Code-Ansatz zum Testen | Zum Video
Statische Analyse
Viele der in ISO 26262 festgelegten Qualitätsaufgaben, darunter Daten- und Kontrollflussanalyse und semantische Analyse, werden durch moderne, fortschrittliche Tools wie Parasoft C/C++test unterstützt. Darüber hinaus umfassen statische Analysetools Metriken und unterstützen Peer-Code-Reviews mit Funktionen, die Unit-Tests und Laufzeitfehlererkennung unterstützen.
Die Rolle der statischen Analyse bei der Softwareverifizierung nach ISO 26262
Verifizierungsmethoden wie die statische Analyse bieten Teams eine praktische Möglichkeit, Fehler in Automobil-Softwaresystemen aufzudecken, zu verhindern und zu korrigieren. Die wahre Stärke fortschrittlicher statischer Analysetools liegt in der Fähigkeit, den Code auf der Grundlage von Branchenstandards für die Einhaltung von Codierungsvorschriften zu analysieren, wie MISRA C / C ++, CERT C/C++ und AUTOSAR C ++ 14.
Die Analyse meldet Verstöße gegen Coderegeln und -richtlinien sowie Codekomplexität und Qualitätsmetriken. Diese Daten können für Verlaufs- und Prüfzwecke quellenkontrolliert werden. Ebenso wichtig ist jedoch die Verwendung eines Fehlerverfolgungs- und -verwaltungssystems, um aussagekräftige analytische Ansichten und Priorisierungen bereitzustellen, mit der Absicht, die Probleme mit dem höchsten Risiko bis hin zu den Problemen mit dem niedrigsten Risiko zu lösen.
Rundgänge und Inspektionen
Informelle Methoden zur Überprüfung von Design und Implementierung. Statische Analysetools automatisieren viele der mühsamen Aspekte der Codeprüfung, wie z. B. die Einhaltung von Codierungsstandards, und weisen gleichzeitig auf Fehler und mögliche Softwareschwächen hin.
Kontrollflussanalyse
Eine statische Codeanalysetechnik zur Bestimmung des Kontrollflusses eines Programms. Moderne fortgeschrittene statische Analysetools wie Parasoft C/C++test verwenden ausgefeilte Kontroll- und Datenflussanalysen, um komplexe Defekte und Sicherheitslücken zu erkennen.
Datenflussanalyse
Eine Technik zum Sammeln von Informationen über die möglichen Wertesätze, die an verschiedenen Stellen in einem Computerprogramm berechnet werden. Die Datenflussanalyse ist ein wichtiger Aspekt erweiterter statischer Analysetools, mit denen komplexe Fehler wie Schwachstellen in verfälschten Daten erkannt werden können.
Statische Code-Analyse
Mit diesem allgemeinen Begriff wird die Analyse von Code beschrieben, die ohne tatsächliche Codeausführung durchgeführt wird. Dazu gehören auch die oben verwendeten Begriffe.
Die Rolle statischer Analysetools zur Unterstützung der ISO 26262-Designprinzipien für den Entwurf und die Implementierung von Softwareeinheiten
Kodierungsstandards verkörpern die bewährten Praktiken, die wir uns in jahrelanger Erfahrung angeeignet haben. Sie zielen darauf ab, Code zu härten, indem sie schlechte Praktiken vermeiden, die zu unzureichender Qualität und Sicherheit führen, und gleichzeitig gute Praktiken fördern, die widerstandsfähigeren Code erzeugen. Im Fall von Automobilstandards basieren sie auf bewährten Praktiken sowie auf Leitlinien zur Vermeidung von Softwarefehlern, die im Laufe der Jahre beobachtet wurden.
Kodierungsstandards definieren normalerweise eine Teilmenge einer Programmiersprache, die als sicherer und zuverlässiger in der Anwendung gilt. Ziel ist es, unvorhersehbares Verhalten von vornherein zu verhindern und die riskanten Sprachfunktionen, die es ermöglichen, einzuschränken.
Die einzige praktische, objektive und nachhaltige Möglichkeit, Codierungsstandards durchzusetzen, sind Tools zur statischen Codeanalyse, die enorme Mengen an Quellcode gleichzeitig automatisch analysieren können. Diese Tools lassen sich in Software-Builds in einer CI/CD-Pipeline integrieren und sind direkt in der IDE eines Entwicklers verfügbar. Und sie liefern Berichte, die die Konformität der analysierten Software mit dem ausgewählten Standard angeben.
In den folgenden Abschnitten werden die wichtigen Industriestandards in der Automobilsoftwarebranche behandelt und wie Automatisierung, Tools und Prozesse genutzt werden können, um die Einhaltung zu erleichtern.
Welche Fehler kann die statische Codeanalyse erkennen?
Jede statische Analyseregel oder -richtlinie behandelt unterschiedliche Probleme. Einige Probleme, die sich auf die Zuverlässigkeit auswirken, können Ressourcenlecks für C oder Nullzeigerausnahmen in C++ sein. Die MISRA C:2023-Richtlinie 4.12 dient dazu, die Verwendung von dynamischem Speicher zu verhindern, der zu Laufzeitfehlern außerhalb des Speichers führen kann, was unerwünscht ist.
In der Richtlinie heißt es: „Die Bezeichner ‚calloc‘, ‚malloc‘, ‚realloc‘, ‚aligned_alloc‘ und ‚free‘ dürfen nicht verwendet werden und kein Makro mit einem dieser Namen darf erweitert werden.“
Der folgende Code führt daher zu einem Verstoß.
int* p1 = (int*)malloc(10); /* Verstoß */
frei(p1); /* Verstoß */
Die empfohlene Lösung besteht darin, einen Speicherblock vorab zu reservieren und ihn nach Bedarf über Ihr definiertes Äquivalent von „malloc“ und „free“ zu verwalten. Ähnlich verhält es sich in C++, wenn die Operatoren „new“ und „delete“ überladen werden.
Die Absicht der Software, die Sprache und die Plattform wirken sich alle auf die Arten von Fehlern aus, die die statische Codeanalyse erkennen kann.
Abweichungen bei der statischen Codeanalyse
Die statische Codeanalyse identifiziert Fehler basierend auf vorgegebenen Regelsätzen. Das bedeutet, dass jede Zeile, die gegen eine Regel verstößt, markiert wird. Natürlich gibt es, wie im echten Leben, bei verschiedenen Softwaretypen einige Ausnahmen von diesen Regeln.
In solchen Situationen lassen Entwickler Abweichungen zu. Die Regeln können den Umständen angepasst werden und besondere Belange berücksichtigen. Ein Team kann mit „Ja“ oder „Nein“ entscheiden, ob diese Abweichung akzeptabel ist oder nicht. Dies wird auch dokumentiert, da es gegen die ursprünglichen Regeln verstößt.
So wählen Sie ein Analysetool für statischen Code aus
Parasofts Suite von Tools zur Automatisierung von Softwaretests funktioniert über verschiedene Arbeitsabläufe und Teamzusammensetzungen hinweg. Wenn es um die statische Codeanalyse geht, trifft das genauso zu. Sie beschleunigt den Entwicklungszyklus, reduziert die Fehlerquote und sorgt für kontinuierliche Verbesserungen. Um herauszufinden, welches Tool für Ihre Anforderungen am besten geeignet ist, beginnen Sie einfach mit der Basissprache des Quellcodes. Zusätzlich zu C- und C++-Lösungen, Parasoft bietet auch Lösungen für Java-Tests mit Jtest sowie Testen der Sprachen C# und VB.NET mit dotTEST.
Die statische Codeanalyse kann entweder in der IDE (Eclipse, VS Code, Visual Studio) oder über die Befehlszeilenschnittstelle für Automatisierungs- und kontinuierliche Integrationspipelines durchgeführt werden. Die Ergebnisse der Analyse können sofort innerhalb der IDE und aus generierten Berichten (HTML, PDF, XML) abgerufen sowie für die weitere Nachbearbeitung, Berichterstattung und Analyse vom preisgekrönten Parasoft DTP-Berichts- und Analyse-Dashboard aggregiert werden.
Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.
Entdecken Sie die Kapitel
- Einführung "
- 1. Übersicht »
- 2. Statische Analyse »
- 3. MISRA »
- 4. AUTOSAR C++ 14 »
- 5. SEI/CERT »
- 6. CWE »
- 7. Unit-Tests »
- 8. Regressionstests »
- 9. Software-Integrationstests »
- 10. Testen von Softwaresystemen »
- 11. Strukturelle Codeabdeckung »
- 12. Anforderungsrückverfolgbarkeitsmatrix »
- 13. Werkzeugqualifizierung »
- 14. Berichterstattung und Analyse »