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