CodeGuard

Lokal andere Findings als in CI

Wenn das CI rot ist und ihr lokal nichts seht oder umgekehrt.

Lokal andere Findings als in CI

CodeGuard ist deterministisch. Wenn lokal und CI unterschiedliche Findings zeigen, gibt es eine konkrete Ursache. Hier die häufigsten.

1. Unterschiedliche CodeGuard-Versionen

Häufigster Fall. Im CI läuft eine andere Version als lokal.

Check:

codeguard --version

Lokal und im CI vergleichen.

Fix: beide auf dieselbe Version bringen. Empfehlung: in CI pinnen (siehe Versionierung) und lokal dieselbe Version installieren.

2. Unterschiedliche Regel-Konfiguration

Das CI sieht eine andere rules/-Version als lokal, weil ihr in einem Branch arbeitet, der die Änderung noch nicht hat.

Check: git status lokal und prüfen, welcher Commit im CI gecheckt wurde.

Fix: sicherstellen dass rules/ und .codeguardignore gecommitted sind und beide Seiten denselben Commit sehen.

3. Solution-State

CodeGuard nutzt MSBuild, um die Solution zu laden. Wenn das CI auf einem sauberen Checkout mit allen NuGet-Packages restored arbeitet, lokal aber noch ungespeicherte Änderungen drin sind oder Packages fehlen, weicht das Modell ab.

Check:

dotnet restore
dotnet build

Fix: lokal ein sauberes dotnet restore && dotnet build vor dem codeguard analyze laufen lassen.

4. Unterschiedliche --fail-on-Schwellen

Lokal lauft ihr ohne Argumente, CI mit --fail-on error. Lokal seht ihr nur die Konsolen-Findings, CI macht ein hartes Rot.

Check: in eurem CI-Config schauen, welche Flags gesetzt sind.

Fix: lokal mit denselben Flags laufen:

codeguard analyze MySolution.sln --fail-on error

5. Plattform-Unterschiede

CodeGuard ist plattform-deterministisch. Gleiche Findings auf Windows und Linux. Wenn ihr trotzdem Unterschiede seht, ist das ein Bug. Schreibt uns mit einer minimalen Repro.

Debug-Workflow

Wenn nichts hilft, läuft beides mit --verbose und diffed die Logs:

codeguard analyze MySolution.sln --verbose 2> debug-local.log
# CI: dasselbe, Log als Artifact ablegen
diff debug-local.log debug-ci.log | less

Im --verbose-Modus listet CodeGuard:

  • Welche Konfiguration aktiv ist
  • Welche Regeln geladen werden
  • Welche Suppressions zugeordnet werden

Mit dem Diff ist die Ursache praktisch immer in den ersten 50 Zeilen Unterschied sichtbar.

Wenn ihr es nicht findet

Schreibt uns an [email protected] mit eurer CLI-Version, den --verbose-Logs beider Seiten und dem Diff der Findings-Listen.