Statische Codeanalyse

Statische Codeanalyse prüft den geschriebenen Programmtext auf Fehler, ohne das Programm laufen zu lassen. Werkzeuge lesen den Text wie ein Korrektor und melden verdächtige Stellen, bevor die Software bei Nutzern landet.

Software besteht aus Text, den Menschen schreiben: dem Quellcode. Statische Codeanalyse bedeutet, diesen Text von einem Programm prüfen zu lassen, ohne die Software vorher zu starten. Das prüfende Programm liest also nur, es rechnet nichts aus. Es sucht nach Stellen, die typisch für Fehler sind. Der Gegensatz dazu ist das Testen im Betrieb: Dort startet man die Software und schaut, ob sie das Richtige tut. Ein Vergleich hilft: Statische Analyse ist wie das Korrekturlesen eines Aufsatzes. Ein Test im Betrieb ist wie das Vorlesen vor Publikum.

Warum das wichtig ist

Fehler in Software werden umso teurer, je später man sie findet. Ein Problem, das ein Werkzeug in Sekunden meldet, kostet fast nichts. Dasselbe Problem im laufenden Onlinebanking kann Millionen kosten. Statische Analyse verschiebt das Finden möglichst weit nach vorne.

Besonders wichtig ist das bei Sicherheitslücken. Viele bekannte Angriffe nutzen immer dieselben Muster im Code aus. Solche Muster kann ein Werkzeug zuverlässig erkennen. In Branchen mit strengen Vorschriften, etwa Luftfahrt oder Medizintechnik, ist statische Analyse deshalb vorgeschrieben.

Ein zweiter Punkt ist die Menge. Große Projekte haben Millionen Zeilen Code. Kein Mensch liest das vollständig durch. Ein Werkzeug schafft es bei jeder Änderung neu.

Wie es funktioniert

Zuerst zerlegt das Werkzeug den Quellcode in seine Bestandteile. Es erkennt, wo eine Funktion beginnt, welche Variablen es gibt und wie Anweisungen zusammenhängen. Daraus entsteht eine Baumstruktur, die den Aufbau des Programms abbildet. Auf dieser Struktur arbeiten dann die eigentlichen Prüfungen.

Die einfachsten Prüfungen sind Musterabgleiche. Sie melden zum Beispiel eine Variable, die angelegt aber nie benutzt wird. Solche Werkzeuge nennt man Linter. Anspruchsvollere Verfahren verfolgen, woher ein Wert kommt und wohin er fließt. So findet man etwa Nutzereingaben, die ungeprüft in eine Datenbankabfrage geraten. Genau das ist eine klassische Sicherheitslücke.

Das Verfahren hat eine grundsätzliche Grenze. Ob ein Programm sich in jedem denkbaren Fall korrekt verhält, lässt sich nicht allgemein aus dem Text ableiten. Werkzeuge müssen deshalb schätzen. Daraus folgen zwei Arten von Ungenauigkeit. Manche Meldungen sind Fehlalarme, sogenannte False Positives. Manche echten Fehler werden übersehen. Zu viele Fehlalarme sind gefährlich, weil Entwickler dann anfangen, alle Meldungen zu ignorieren.

Neu ist, dass Sprachmodelle bei dieser Aufgabe mitarbeiten. Sie erkennen auch Probleme, für die niemand eine feste Regel geschrieben hat. Dafür sind ihre Aussagen weniger verlässlich als die klassischer Regelwerke.

Wo man dem Begriff begegnet

Wer programmiert, sieht statische Analyse ständig. Moderne Programmierumgebungen unterstreichen fehlerhafte Stellen schon beim Tippen, ähnlich wie eine Textverarbeitung Tippfehler markiert. Das ist statische Analyse im Hintergrund.

In Firmen läuft sie automatisch bei jeder Codeänderung. Schlägt sie Alarm, wird die Änderung nicht übernommen. Bekannte Anbieter sind SonarQube, Snyk und Checkmarx, dazu die Prüfwerkzeuge von GitHub. Sicherheitsfirmen dieser Art werden regelmäßig für hohe Summen übernommen, weshalb der Begriff auch in Finanznachrichten auftaucht.

Aktuell bekommt das Thema zusätzliche Aufmerksamkeit, weil KI-Werkzeuge sehr viel Code schreiben. Dieser Code sieht meist plausibel aus, ist aber nicht automatisch sicher. Statische Analyse ist eine der wenigen Methoden, die solche Mengen überhaupt überprüfen können.

Subscribe free. Unsubscribe the second it sucks.

High-signal news across AI, business, UX, and tech. Every morning.