Skip to main content

Leistung — Inkrementelle Analyse (D.2)

Niveau Mittel
Lesezeit ⏱ 8 Min.
Wörter 404
Themen performancecache

Performance-Validierung — Inkrementelle Analyse

Version: 1.3.0 Datum: 2026-05-01

Dieses Dokument fasst die im Rahmen des Performance-Releases gemessenen Gewinne zusammen. Die Werte stammen aus einer realen Codebasis und können als Anhaltspunkt für Ihre eigenen Projekte dienen.

Hardware-Konfiguration

Parameter Wert
Maschine Apple M1 Pro
Kerne 8
Betriebssystem macOS Darwin 25.3.0 (arm64)

Referenzprojekt

Parameter Wert
Typ FastAPI (Python + JS + HTML)
Analysierbare Dateien 332 gescannte Dateien (676 Quelldateien vor Ausschlüssen)

Hauptmetrik — Gesamtdauer der Auditierung

Lauf Vor 1.3.0 Ab 1.3.0 Gewinn
Cold (erste Auditierung, leerer Cache) 15.07 s 14.96 s ≈ identisch
Warm (vollständiger Cache, keine Datei geändert) 15.07 s 4.27 s -71.7 %
Änderung einer einzigen Datei 15.07 s 4.21 s -72.0 %

Detail der Phasen (warm)

Phase Vor 1.3.0 Ab 1.3.0 Gewinn
Laden der Regeln (cold path) 0.04 s 0.04 s unverändert
Laden der Regeln (serialisierter Cache) n. v. < 0.1 s neu
Datei-Cache (load + check) n. v. < 0.1 s neu
Scan von Dateien und Regeln 14.99 s 3.97 s -73.5 %
Speichern des Datei-Caches n. v. < 0.05 s neu
Generierung des HTML-Berichts unverändert unverändert

Strikte funktionale Nichtregression

Metrik Vor 1.3.0 Ab 1.3.0 Status
Findings CRITICAL 0 0 identisch
Findings HIGH 166 166 identisch
Findings MEDIUM 2090 2090 identisch
Findings LOW 984 984 identisch
Findings INFO 2 2 identisch
Findings insgesamt 3242 3242 identisch

Keine Regression festgestellt. Die Findings sind zwischen Vorher und Nachher strikt identisch.

Cache-Statistiken (warm run)

Metrik Wert
Cache hits (wiederverwendete Dateien) 317
Cache misses (neu analysierte Dateien) 15
Cache-hit-Rate 95.5 %
Bereinigte verwaiste Einträge 0
Größe des Caches der Regeln 1.5 MB
Größe des Caches der Datei-Hashes ~ 200 KB

Funktionsweise

Cache der kompilierten Regeln

Die Regeln werden beim ersten Lauf einmalig kompiliert und in einem internen Cache abgelegt. Bei nachfolgenden Läufen werden sie in unter 100 ms aus dem Cache geladen.

Inkrementelle Analyse (Datei-Hashes)

Jede Datei wird über einen SHA-256 ihres Inhalts identifiziert. Wurde der Inhalt zwischen zwei Läufen nicht verändert, werden die zuvor erkannten Findings unverändert wiederverwendet. Der SHA-256 (statt der mtime) verhindert spurious Invalidierungen bei touch oder bloßen Metadaten-Änderungen.

Sicherheit des Caches

  • HMAC-SHA256-Manipulationsschutz für den Datei-Cache
  • Atomares Schreiben (temp + rename), um Korruption bei Stromausfall zu vermeiden
  • Bereinigung verwaister Einträge bei jedem Speichern
  • Notfall-Deaktivierung über Umgebungsvariablen: SCA_NO_CACHE, SCA_NO_INCREMENTAL, SCA_NO_PARALLEL

Cache vollständig zurücksetzen

Der Cache liegt im Verzeichnis .sca-cache/ Ihres Projekts. Sie können ihn jederzeit gefahrlos löschen — der nächste Lauf wird ihn neu aufbauen:

rm -rf /pfad/zum/projekt/.sca-cache
./staticcodeaudit-<plattform> /pfad/zum/projekt