![GrammaTech Static Code Analysis](media/banner/Banner_CodeSonar_2023.png)
Wie funktioniert statische Codeanalyse?
CodeSonar arbeitet wie ein Compiler auf der bereits vorhandenen Entwicklungsumgebung. Anstatt einen Objektcode zu generieren, erstellt CodeSonar jedoch eine abstrakte Version Ihres gesamten Programmes. Im nächsten Schritt analysiert CodeSonars Symbolic-Execution-Engine die Programmpfade und Programmvariablen, sowie deren Verknüpfungen untereinander. Anschließend werden irrelevante Programmpfade mittels Theorem-Proving-Technologie entfernt um sie von der Analyse auszunehmen.
Das folgende Diagramm erklärt die Vorgehensweise von CodeSonar
Checker suchen im Programm-Code nach oft auftretenden Fehlern und Verletzungen von Richtlinien. Sie durchsuchen das Programm nach Auffälligkeiten oder nach Mustern,
die auf Fehler hindeuten. Zusätzlich analysiert die Symbolic-Execution-Technik Programmpfade anhand eines Datenflussdiagramms. In dieser Datenstruktur werden Pfade des
Programmes dargestellt, die möglicherweise relevant für dessen korrekten Ablauf sind.
Sobald bei der Analyse der Programmpfade eine Anomalität festgestellt wird, erhält der Entwickler eine Warnmeldung. Es muss eine astronomische Anzahl von möglichen
Fehlerkombinationen visualisiert und analysiert werden, um die Sicherheit des Programms zu gewährleisten. Für eine maximale Effektivität greift CodeSonar 4 deshalb auf
verschiedene Vorgehensweisen zurück. Beispielsweise werden Prozeduren während der Analyse zusammengefasst und komprimiert sowie Programmpfade in einer Abfolge untersucht,
die ein Paging minimiert.
Erweiterbare, anspruchsvolle Codeanalyse
Codes, mit weit über 10 Millionen Programm-Zeilen, können von CodeSonar analysiert werden. Um die Effektivität mittels Nebenläufigkeit zu erhöhen, kann sich CodeSonar die Vorteile von Mehrkernprozessoren nutzbar machen. Bei Änderungen am Programm überprüft CodeSonar nicht nochmal den gesamten Code. Wurde dessen Grundgerüst einmal analysiert, überprüft CodeSonar mittels inkrementeller Analyse nur noch die Änderungen.CodeSonar bietet eine umfassende Analyse der Datenflüsse und Symbolic Execution, um den Ablauf des gesamten Programmes zu überprüfen. Dabei belässt es das Analysetool
nicht bei der bloßen Erkennung von Fehlermustern oder entsprechenden Approximationen. Die ganzheitliche Betrachtung des zu untersuchenden Programmes sorgt hingegen dafür,
dass CodeSonar auch bisher unbekannte Fehlermuster aufdeckt.