Statische Codeanalyse ist ein Testverfahren, das
vor allem in sicherheitskritischen Bereichen, aber
auch bei weniger kritischen Anwendungen eingesetzt wird. Dieses Paper ist in zwei Teile gegliedert.
Der Erste Teil (Abschnitt 2-3) befasst sich mit
statischer Codeanalyse im Allgemeinen. Nach
einer Einordnung und Abgrenzung zu anderen
Testverfahren werden verschiedene Analysetypen
vorgestellt. Der zweite Teil (Abschnitt 4-5) befasst
sich mit Werkzeugen, die eingesetzt werden können, um eine statische Codeanalyse durchzuführen.
Nachdem in Abschnitt 4 verschiedene Anforderungen an Tools festgelegt werden, findet in Abschnitt
5 ein Vergleich mehrerer Tools statt.
Inhaltsverzeichnis
- Einleitung
- Einordnung
- Analysetypen
- Syntaxanalyse
- Stilanalyse
- Kontrollflussanalyse
- Datenflussanalyse
- Anforderungen an Werkzeuge
- Umfang der Analyse
- Zuverlässigkeit
- Reports
- Performanz
- Vergleich verschiedener Werkzeuge
- Überblick
- Umfang der Analyse
- Zuverlässigkeit
Zielsetzung und Themenschwerpunkte
Dieses Paper bietet einen Überblick über die statische Codeanalyse und die Werkzeuge, die dafür eingesetzt werden können. Es beleuchtet die verschiedenen Analysetypen, die Anforderungen an geeignete Werkzeuge und vergleicht schließlich verschiedene am Markt erhältliche Tools.
- Verschiedene Arten der statischen Codeanalyse
- Anforderungen an Werkzeuge für die statische Codeanalyse
- Vergleich verschiedener Tools zur statischen Codeanalyse
- Bewertung der Zuverlässigkeit verschiedener Tools
- Der Einfluss der statischen Codeanalyse auf die Softwarequalität
Zusammenfassung der Kapitel
Einleitung: Die Einleitung betont die unvermeidbaren Fehler im Quellcode und deren besondere Bedeutung in sicherheitskritischen Systemen. Sie führt die statische Codeanalyse als Methode zur frühzeitigen Fehlererkennung ein, die auch schwer auffindbare Laufzeitfehler aufdecken kann.
Einordnung: Dieses Kapitel differenziert zwischen dynamischen und statischen Testverfahren. Während dynamische Tests die Funktionalität durch Codeausführung prüfen, arbeitet die statische Codeanalyse rein quelltextbasiert und wird als White-Box-Testverfahren eingeordnet. Der prinzipielle Ablauf der statischen Codeanalyse wird grafisch veranschaulicht.
Analysetypen: Hier werden verschiedene Analysetypen im Detail beschrieben: die Syntaxanalyse (Prüfung auf Syntax- und Grammatikfehler), die Stilanalyse (Prüfung des Programmierstils gemäß Richtlinien wie Misra C oder JSF C++), die Kontrollflussanalyse (Analyse des Programmablaufs zur Erkennung unerreichbaren Codes) und die Datenflussanalyse (Untersuchung des Variablenzustands entlang verschiedener Ausführungspfade zur Identifizierung von Fehlern wie undefinierter Variablenverwendung).
Anforderungen an Werkzeuge: Dieses Kapitel listet die wichtigen Anforderungen an Werkzeuge für die statische Codeanalyse auf. Dazu gehören der Umfang der Analyse (möglichst viele effektive Analysen), die Zuverlässigkeit (geringe False-Positives und False-Negatives), die Qualität der Reports (Übersichtlichkeit, Filterfunktionen, Exportmöglichkeiten) und die Performanz (schnelle Analyse, auch bei großen Codebasen).
Vergleich verschiedener Werkzeuge: Der letzte Abschnitt bietet einen Überblick über verschiedene Tools (Coverity, Polyspace, CodeSonar, Klocwork, QA-C/C++) und vergleicht sie hinsichtlich des Umfangs der durchgeführten Analysen und ihrer Zuverlässigkeit (False-Positive-Rate). Es werden die Stärken und Schwächen der einzelnen Tools in Bezug auf die zuvor definierten Anforderungen herausgestellt.
Schlüsselwörter
Statische Codeanalyse, dynamische Codeanalyse, White-Box-Test, Syntaxanalyse, Stilanalyse, Kontrollflussanalyse, Datenflussanalyse, Werkzeuge, Coverity, Polyspace, CodeSonar, Klocwork, QA-C/C++, False Positives, False Negatives, Misra C, JSF C++, Softwarequalität, Sicherheit, eingebettete Systeme.
Häufig gestellte Fragen zur Statischen Codeanalyse
Was ist der Inhalt dieses Dokuments?
Dieses Dokument bietet einen umfassenden Überblick über die statische Codeanalyse. Es beinhaltet ein Inhaltsverzeichnis, die Zielsetzung und Themenschwerpunkte, Zusammenfassungen der einzelnen Kapitel und eine Liste der Schlüsselwörter. Der Fokus liegt auf den verschiedenen Arten der statischen Codeanalyse, den Anforderungen an geeignete Werkzeuge und einem Vergleich verschiedener am Markt erhältlicher Tools.
Welche Arten der statischen Codeanalyse werden behandelt?
Das Dokument beschreibt detailliert vier Analysetypen: die Syntaxanalyse (Prüfung auf Syntax- und Grammatikfehler), die Stilanalyse (Prüfung des Programmierstils gemäß Richtlinien wie Misra C oder JSF C++), die Kontrollflussanalyse (Analyse des Programmablaufs zur Erkennung unerreichbaren Codes) und die Datenflussanalyse (Untersuchung des Variablenzustands zur Identifizierung von Fehlern wie undefinierter Variablenverwendung).
Welche Anforderungen werden an Werkzeuge für die statische Codeanalyse gestellt?
Wichtige Anforderungen an Werkzeuge sind: der Umfang der Analyse (möglichst viele effektive Analysen), die Zuverlässigkeit (geringe False-Positives und False-Negatives), die Qualität der Reports (Übersichtlichkeit, Filterfunktionen, Exportmöglichkeiten) und die Performanz (schnelle Analyse, auch bei großen Codebasen).
Welche Werkzeuge werden verglichen?
Der Vergleich umfasst verschiedene Tools wie Coverity, Polyspace, CodeSonar, Klocwork und QA-C/C++. Der Vergleich konzentriert sich auf den Umfang der durchgeführten Analysen und deren Zuverlässigkeit (False-Positive-Rate). Stärken und Schwächen der einzelnen Tools im Hinblick auf die zuvor definierten Anforderungen werden hervorgehoben.
Wie wird die statische Codeanalyse im Kontext anderer Testverfahren eingeordnet?
Das Dokument differenziert zwischen dynamischen und statischen Testverfahren. Dynamische Tests prüfen die Funktionalität durch Codeausführung, während die statische Codeanalyse rein quelltextbasiert arbeitet und als White-Box-Testverfahren eingeordnet wird. Der prinzipielle Ablauf der statischen Codeanalyse wird veranschaulicht.
Welche Bedeutung hat die statische Codeanalyse für die Softwarequalität und Sicherheit?
Die Einleitung betont die unvermeidbaren Fehler im Quellcode und deren besondere Bedeutung in sicherheitskritischen Systemen. Die statische Codeanalyse wird als Methode zur frühzeitigen Fehlererkennung eingeführt, die auch schwer auffindbare Laufzeitfehler aufdecken kann. Der Einfluss der statischen Codeanalyse auf die Softwarequalität wird ebenfalls angesprochen.
Welche Schlüsselwörter beschreiben den Inhalt des Dokuments?
Schlüsselwörter sind: Statische Codeanalyse, dynamische Codeanalyse, White-Box-Test, Syntaxanalyse, Stilanalyse, Kontrollflussanalyse, Datenflussanalyse, Werkzeuge, Coverity, Polyspace, CodeSonar, Klocwork, QA-C/C++, False Positives, False Negatives, Misra C, JSF C++, Softwarequalität, Sicherheit, eingebettete Systeme.
- Citar trabajo
- Stefan Wrobel (Autor), 2010, Statische Codeanalyse und Werkzeuge, Múnich, GRIN Verlag, https://www.grin.com/document/195625