CodeGuard

Determinismus

Warum gleicher Input bei CodeGuard immer gleiche Findings liefert.

Determinismus

CodeGuard garantiert: gleicher Source-Code-Stand, gleiche Regelmenge, gleiche CodeGuard-Version ergeben exakt die gleichen Findings, unabhängig von Rechner, Tageszeit, Systemlast oder Locale-Einstellungen.

Was den Output ändern kann

Drei Faktoren und nur drei:

  1. Source-Code ändert sich.
  2. Regelmenge ändert sich. Eine .cgr-Datei dazu, raus oder geändert.
  3. CodeGuard-Version ändert sich. Mit neuen Versionen können sich eingebaute Regeln verfeinern oder neue Schema-Properties dazukommen.

Für reproduzierbare Builds: pinnt eure CodeGuard-Version im CI. Siehe Versionierung.

Wie wir das durchsetzen

  • Keine Zufallszahlen im kritischen Pfad. Sortierungen sind explizit und deterministisch.
  • Keine DateTime.UtcNow-Aufrufe in der Analyse selbst. Die Findings enthalten keine vom Lauf abhängigen Timestamps.
  • Keine Filesystem-Reihenfolge. Verzeichnis-Listings werden vor der Verarbeitung sortiert.
  • Keine AI im kritischen Pfad. Kein LLM-Endpoint, keine Heuristik die sich zwischen Aufrufen ändert.

Konsequenz für euren Workflow

Wenn lokal grüne Builds in der CI rot sind, liegt es immer an einem der drei Faktoren oben. Typische Ursachen:

  • Lokale und CI-CodeGuard-Versionen auseinandergelaufen.
  • .codeguard/-Konfig nicht eingecheckt.
  • Neue Regel hinzugefügt, lokal aber nicht refreshed.

Siehe Lokal andere Findings als in CI für die Debug-Schritte.