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.