Statische Codeanalyse für komplexe Systeme

Visao, die statische Analyse in Midair, findet Fehler im Code vor der Ausführung.

Visao prüft Quellcode, Ausführungspfade und Projektregeln, bevor die Software läuft.

Warum statische Codeanalyse wichtig ist

Manche Fehler sind billiger zu finden, solange die Software noch nicht auf Geräten oder in verteilten Umgebungen läuft. Die statische Analyse prüft den Quellcode, ohne ihn auszuführen. So findet sie Fehler im Code, bevor die Tests beginnen.

In Midair übernimmt Visao diesen Schritt vor der Ausführung. Seine Befunde bleiben mit späteren Testläufen und Laufzeitdaten verbunden.

Was ist statische Codeanalyse?

Statische Codeanalyse prüft den Quellcode, ohne das Programm auszuführen. Sie findet mögliche Fehler, unsicheres Verhalten und Verstöße gegen festgelegte Regeln, bevor die Tests zur Laufzeit beginnen.

Die statische Analyse fragt, was sich vor der Ausführung im Code finden lässt. Ein Test fragt, was passiert, wenn die Software wirklich läuft.

Den Unterschied mit Beispielen erklärt unser Artikel Static and dynamic code analysis (auf Englisch).

Was eine statische Analyse leisten muss

Vier Probleme entscheiden, ob ein Analysewerkzeug an einem echten System nützt.

Fehler, die der Compiler nicht meldet

Code lässt sich ohne Fehler übersetzen und kann trotzdem Verhalten enthalten, das man untersuchen sollte.

Projektspezifische Fehlerregeln

Allgemeine Analysewerkzeuge kennen nicht jede Vorgabe, die für ein bestimmtes System zählt.

Komplexe Ausführungspfade

Ein Fehler kann von einem bestimmten Pfad durch den Code abhängen. Ein einfacher Mustervergleich findet ihn dann nicht.

Statische Befunde ohne Bezug zu späteren Tests

Ein Befund nützt weniger, wenn er sich nicht mit dem Testlauf oder dem Laufzeitverhalten verbinden lässt, das ihn bestätigt.

Visao

Wie Visao den Code analysiert

Visao kombiniert mehrere Analyseverfahren und untersucht den Code vor der Ausführung. Jeder Befund nennt die Stelle im Quellcode und die Regel, um die es geht.

Model Checking

Untersucht die Zustände, die das Programm erreichen kann, und prüft, ob eine Eigenschaft in einem davon verletzt wird.

Abstrakte Interpretation

Verfolgt, welche Werte eine Variable annehmen kann. Das grenzt die Suche ein und findet manche Fehler direkt.

SMT-basierte Prüfung

Entscheidet, ob alle Bedingungen, die zu einem Fehler führen, gleichzeitig gelten können.

Projektspezifische Regeln

Prüfungen für die Vorgaben einer Codebasis, die neben den eingebauten Regeln laufen.

Beispiele für Befunde

•

Unsicherer Speicherzugriff

Zum Beispiel ein Puffer ohne Abschlusszeichen, der danach über sein Ende hinaus gelesen wird.

•

Ganzzahlüberlauf

Zum Beispiel eine Verschiebung, die nach einer Integer-Promotion in das Vorzeichenbit läuft.

•

Verstöße gegen Projektregeln

Alles, was das Team für sein eigenes System als Fehlerbedingung festgelegt hat.

Ein statischer Befund endet nicht im Bericht

Visao läuft vor der Ausführung. Braucht ein Befund eine Prüfung zur Laufzeit, geht dieselbe Untersuchung in Midair weiter. Dort folgen ein Testlauf in TS Factory und Laufzeitdaten aus Delta.

Visao-Befund → Testlauf → Laufzeitdaten

Einsatzbereiche

•

Embedded-Software und Firmware

Code, der später auf Hardware mit wenig Einblick zur Laufzeit läuft.

•

Netzwerk- und Systemsoftware

Low-Level- und Infrastrukturcode, dessen Verhalten vom Systemkontext abhängt.

•

Software mit hohen Security-Anforderungen

Code, in dem unsicheres Verhalten gefunden werden muss, bevor die Untersuchung zur Laufzeit beginnt.

•

Komplexe C- und C++-Codebasen

Großer, langlebiger Quellcode, in dem sich ein Fehler auf einem selten genutzten Pfad verstecken kann.

•

Projekte mit domänenspezifischen Regeln

Allgemeine Analysewerkzeuge erfassen hier nicht jede Fehlerbedingung, die zählt.

Funktionen

Statische Analyse vor der Ausführung

Finden Sie Fehler im Code, ohne die Software auszuführen.

Projektspezifische Prüfungen

Wenden Sie Regeln an, die die echten Vorgaben des Projekts abbilden.

Pfadsensitive Analyse

Untersuchen Sie Verhalten, das davon abhängt, auf welchem Weg die Ausführung einen Zustand erreicht.

CI/CD-Integration

Führen Sie die Analyse in Ihren bestehenden Entwicklungsabläufen aus.

Verbundene Nachweise in Midair

Übernehmen Sie relevante Befunde in spätere Tests und in die Untersuchung zur Laufzeit.

Pilot starten

Starten Sie mit Ihrer eigenen Codebasis. Sehen Sie, wie Visao-Befunde in Midair mit Tests und Laufzeitdaten verbunden sind.