Zum Hauptinhalt springen

StaticCodeAudit

Dokumentation

Alles, was Sie brauchen, um Ihr erstes Audit einzurichten, zu konfigurieren und auszuführen.

Erste Schritte

Voraussetzungen

Linux x86_64, macOS (Intel & Apple Silicon) oder Windows x64. Die Binärdatei ist vollständig eigenständig — keine Laufzeitumgebung, keine zu installierenden Abhängigkeiten.

Installation

Laden Sie die Binärdatei für Ihr Betriebssystem aus Ihrem Konto herunter, legen Sie sie in einen beliebigen Ordner und machen Sie sie ausführbar.

# Archiv entpacken (oder .dmg unter macOS einbinden)
$ tar -xzf staticcodeaudit-linux-x64.tar.gz
# Binärdatei ausführbar machen (Linux / macOS)
$ chmod +x ./staticcodeaudit-linux-x64
# Binärdatei überprüfen
$ ./staticcodeaudit-linux-x64 --version

Erstes Audit

Projekt initialisieren, dann Audit ausführen. Das --init-Flag generiert eine audit.config.json mit automatisch erkannten Einstellungen.

# Projekt-Konfiguration erzeugen (interaktiv)
$ ./staticcodeaudit-linux-x64 /path/to/your/project --init
# Audit starten
$ ./staticcodeaudit-linux-x64 /path/to/your/project
# HTML-Bericht öffnen
$ open docs/audit-reports/SCA-REPORT-*.html

Konfiguration

Die gesamte Konfiguration wird in audit.config.json im Projektstammverzeichnis gespeichert. Das --init-Flag generiert diese Datei mit automatisch erkannten Einstellungen. Zwei Schlüssel sind obligatorisch.audit.config.json at the root of your project. The --init flag generates this file with auto-detected settings. Two keys are mandatory.

Pflichtschlüssel

Schlüssel Beschreibung
languages Array der zu scannenden Sprachen. Steuert, welche Erkennungsregeln ausgeführt werden.
paths.include Array der zu scannenden Verzeichnisse (relativ zum Projektstamm).

Beispielkonfiguration

audit.config.json
{
  "languages": ["python", "javascript", "html"],
  "paths": {
    "include": ["src/", "app/", "lib/"],
    "exclude": ["node_modules/", "vendor/", ".venv/"]
  },
  "brand": {
    "tool_name": "StaticCodeAudit",
    "company_name": "CodeFixture",
    "prefix": "SCA",
    "logo": null
  },
  "reports": {
    "output_dir": "audit-reports",
    "history_dir": "audit-reports/audit-datas",
    "max_history": 10,
    "language": "en"
  },
  "categories": {
    "security":     { "enabled": true, "weight": 3 },
    "architecture": { "enabled": true, "weight": 2 },
    "ui":           { "enabled": true, "weight": 1 },
    "ux":           { "enabled": true, "weight": 1 },
    "maintenance":  { "enabled": true, "weight": 1 },
    "dependencies": { "enabled": false, "weight": 2 },
    "cicd":         { "enabled": false, "weight": 2 }
  },
  "retention": {
    "mode": null,
    "max_count": 10,
    "max_days": 90
  }
}

CLI-Optionen

Alle Flags sind optional. Das einzige erforderliche Argument ist der Pfad zu Ihrem Projekt.

$ ./staticcodeaudit-linux-x64 /path/to/project [options]
Flag Beschreibung
--initNeues Projekt initialisieren: Registrierung mit UUID und Generierung von audit.config.json.
--quick, -qSchnellmodus: Tests, Fixture-Validierung und Abhängigkeitsscan überspringen.
--config, -cPfad zu einer benutzerdefinierten Konfigurationsdatei (Standard: audit.config.json im Projektstamm).
--output, -oAusgabeverzeichnis für Berichte überschreiben.
--project-name, -pIm Bericht angezeigten Projektnamen überschreiben.
--verbose, -vDetaillierte Konsolenausgabe mit Fortschritt aktivieren.
--fail-on-highMit Code 1 beenden, wenn ein HIGH-Schweregrad-Befund erkannt wird (nützlich für CI/CD).
--sarifSARIF 2.1.0-Export zusätzlich zum HTML-Bericht generieren.
--sbomCycloneDX 1.5 SBOM (Software Bill of Materials) generieren.
--git-blameAutor jedes Befunds über git blame auflösen.
--skip-testsUnit-Test-Ausführung überspringen.
--skip-depsAbhängigkeits-Schwachstellenscan überspringen.
--skip-cicdCI/CD-Pipeline-Audit überspringen.
--script-langKonsolenausgabesprache: en, fr, es, de (Standard: en).
--only-categoryNur eine einzelne Kategorie ausführen (z.B. --only-category security).
--disable-ruleBestimmte Regeln per Schlüssel deaktivieren (wiederholbar).
--retention-dry-runVorschau welche alten Berichte gelöscht würden, ohne sie tatsächlich zu entfernen.
--self-testAlle Fixtures (verwundbar + sauber) gegen Erkennungsregeln validieren.
--install-hookGit Pre-Commit-Hook installieren, der das Audit automatisch ausführt.
--list-rulesAlle verfügbaren Erkennungsregeln auflisten und beenden.
--list-categoriesAlle Audit-Kategorien mit ihrem Status auflisten und beenden.
--list-projectsAlle registrierten Projekte auflisten und beenden.
--debugDebug-Level festlegen: info, detail oder trace.

Audit-Kategorien

StaticCodeAudit organisiert seine 698 Erkennungsregeln in 7 Kategorien. Jede Kategorie hat ein Gewicht, das die Gesamtgesundheitsbewertung beeinflusst. Kategorien können in Ihrer Konfiguration aktiviert oder deaktiviert werden.

Kategorie Code Gewicht Standard Abdeckung
Sicherheit SECURITY 3 SQL-Injection, XSS, SSRF, Path Traversal, Geheimnisse, LDAP, Cookies, Krypto, DSGVO
Architektur ARCH 2 Admin-Routen, DB in Routern, direkte Abfragen, N+1, Dateigröße
UI UI 1 Inline-Styles, createElement, SVG inline, Event-Listener, DOM-Schleifen
UX UX 1 ARIA, Alt-Text, Fokus, Autoplay, i18n, console.log, WCAG 2.1
Wartung MAINTENANCE 1 TODO/FIXME, veraltete APIs (5 Sprachen), Catch-All, Debug-Anweisungen
Abhängigkeiten DEPENDENCIES 2 Deaktiviert CVE-Scan (pip-audit, npm audit), ungepinnte Versionen, Lizenzkonformität
CI/CD CICD 2 Deaktiviert GitHub Actions, GitLab CI, Expression-Injection, Berechtigungen, ungepinnte Actions

Abhängigkeiten und CI/CD sind standardmäßig deaktiviert. Aktivieren Sie sie in audit.config.json. Das Gewicht beeinflusst die Berechnung der Gesundheitsbewertung: höheres Gewicht bedeutet stärkeren Einfluss der Kategorie.

Unterstützte Sprachen

Deklarieren Sie die in Ihrem Projekt verwendeten Sprachen über das languages-Array in audit.config.json. Jede Sprache aktiviert ihren dedizierten Satz von Erkennungsregeln.languages array in audit.config.json. Each language activates its dedicated set of detection rules.

Sprache Config-Wert Dateierweiterungen
Python"python".py
JavaScript / TypeScript"javascript".js, .jsx, .ts, .tsx, .mjs
HTML / Templates"html".html, .htm, .xhtml, .vue, .svelte, .ejs, .hbs, .njk, .jinja, .jinja2, .twig, .liquid, .mustache, .phtml, .erb, .jsp, .asp, .aspx, .cshtml
Java"java".java
C#"csharp".cs
PHP"php".php, .inc
YAML"yaml".yml, .yaml

YAML-Scanning wird für CI/CD-Regeln verwendet (GitHub Actions, GitLab CI). TypeScript wird durch den Config-Wert "javascript" abgedeckt — dieselben Regeln gelten für beide.

Ausgabeformate

Jedes Audit generiert einen HTML-Bericht und eine JSON-Datendatei. Zusätzliche Formate können über CLI-Flags aktiviert werden.

HTML-Bericht

Eigenständige HTML-Datei mit CSS, JavaScript und Chart.js inline. In jedem Browser öffnen, per E-Mail teilen, als PDF drucken. Kein Server erforderlich.

SCA-REPORT-YYYY-MM-DD-HH-MM.html

JSON-Daten

Strukturierte Audit-Daten für programmatische Verarbeitung und historischen Vergleich. Enthält alle Befunde, Bewertungen, Metadaten und Statistiken.

SCA-DATA-YYYY-MM-DD-HH-MM.json

SARIF 2.1.0

--sarif

OASIS-Standard für statische Analyseergebnisse. Kompatibel mit GitHub Code Scanning, GitLab SAST und Azure DevOps.

SCA-SARIF-YYYY-MM-DD-HH-MM.sarif

SBOM CycloneDX 1.5

--sbom

Software Bill of Materials, die jede Komponente und Abhängigkeit in Ihrem Projekt auflistet. Zunehmend gefordert durch Lieferketten-Sicherheitsvorschriften.

SCA-SBOM-YYYY-MM-DD-HH-MM.json

White-Label-Branding

Passen Sie Berichte mit Ihrem eigenen Branding an — kostenlos, keine Enterprise-Lizenz erforderlich. Das gesamte Branding wird im brand-Abschnitt von audit.config.json konfiguriert.brand section of audit.config.json.

Option Standard Wirkung
brand.tool_nameStaticCodeAuditWird im Berichts-Header, Fußzeile, Konsolenbanner und Seitentitel angezeigt.
brand.company_nameCodeFixtureWird in der Fußzeile des Berichts angezeigt.
brand.prefixSCADateipräfix für Ausgabedateien (z.B. SCA-REPORT-, SCA-DATA-).
brand.logonullPfad zu Ihrem Logo (SVG, PNG, JPG). Ersetzt das Standard-Favicon und Header-Symbol im Bericht.
brand.primary_color#1e3a5fStartfarbe des Berichts-Header-Gradienten.
brand.accent_color#2c5282Endfarbe des Berichts-Header-Gradienten.
audit.config.json
"brand": {
  "tool_name": "MyCompany Audit",
  "company_name": "MyCompany Inc.",
  "prefix": "MCA",
  "logo": "assets/my-logo.svg",
  "primary_color": "#1a1a2e",
  "accent_color": "#16213e"
}

Berichtsfunktionen

Der HTML-Bericht ist vollständig eigenständig — eine einzelne Datei mit allen CSS, JavaScript und Diagrammen inline. Kein Server, keine externen Ressourcen.

12+ interaktive Diagramme

Schweregradverteilung, Kategorieaufschlüsselung, Zeitanalyse, historische Trends, Konfidenzniveaus und mehr. Betrieben von Chart.js (inline).

Schweregrad-Gruppierung

Befunde nach Schweregrad organisiert (CRITICAL, HIGH, MEDIUM, LOW, INFO) mit farbcodierten Badges, Dateipfaden, Zeilennummern und Code-Kontext.

Gesundheitsbewertung

Logarithmische Bewertung (0-100) basierend auf Sicherheitsbefunden, normalisiert nach Projektgröße (LOC). Schweregradstrafen: CRITICAL ×10, HIGH ×5, MEDIUM ×2, LOW ×1.

Git-Blame-Integration

Bei Aktivierung (--git-blame) zeigt jeder Befund den Committer-Namen, das Datum und den Commit-Hash für Team-Verantwortlichkeit an.

Baseline-Vergleich

Audit-Ergebnisse mit bis zu 10 vorherigen Snapshots vergleichen (konfigurierbar). Neue, gelöste und persistente Befunde im Zeitverlauf verfolgen.

Berichtsaufbewahrung

Automatische Bereinigung alter Berichte nach Anzahl, Alter in Tagen oder beidem. --retention-dry-run verwenden, um Löschungen vorzuschauen. Mindestens 1 Bericht wird immer behalten.

Berichte in 4 Sprachen

Vollständige Lokalisierung in Englisch, Französisch, Spanisch und Deutsch. Jeder String übersetzt: Regelnamen, Risiken, Lösungen, Vorteile, Diagrammbeschriftungen, Glossarbegriffe.

Integriertes Glossar

36 Akronyme und Fachbegriffe mit Tooltip-Vorschau. Jedes Vorkommen im gesamten Bericht ist ein klickbarer Link zur Glossardefinition.

Executive Summary

Dashboard am Anfang jedes Berichts: Gesundheits-Score, Schweregrad-Aufschlüsselung, Trend und Prioritätsempfehlungen in voller Breite für sofortige Übersicht.

Benutzerhandbuch in 4 Sprachen

Jede Kundenlieferung enthält USER-GUIDE.md auf Englisch, Französisch, Spanisch und Deutsch — CLI-Optionen, audit.config.json, Berichtsanpassung, Unterdrückung und CI/CD-Integration.