Guardrails für KI-generierten Code
KI-Assistenten generieren Code, der plausibel aussieht, aber eure Konventionen nicht zuverlässig kennt. Cursor, Claude Code, Copilot und Aider haben kein Gedächtnis für eure Architektur-Entscheidungen über die Session hinaus. Sie ignorieren lange Convention-Dokumente, sobald das Context-Window enger wird, und produzieren Layering-Verstöße jede Stunde aufs Neue.
CodeGuard hängt sich an drei Stellen in den AI-Workflow ein und zwingt die KI in eure Regeln.
Die Build-Fix-Loop
Agentic AI-Tools haben heute einen eingebauten Zyklus aus Code-Generierung, Test-Run und Selbst-Korrektur. CodeGuard wird darin zum Konventions-Wächter:
AI generiert Code
-> codeguard analyze MySolution.sln --fail-on error
-> Finding: "Controller calls EF directly. Use repository pattern."
-> AI liest @recommendation
-> AI fixt es selbst
-> grüner Build
Der @recommendation-Header in jeder Regel wird zum Fix-Prompt für die
KI. Eure Devs schreiben einmal "Inject TimeProvider via constructor",
und ab da fixt die KI das selbst, jedes Mal, bis ans Ende eurer
Vertragslaufzeit.
Eure DSL-Regeln als ausführbare Team-Spezifikation
Was bisher in der README oder im Tribal Knowledge stand, wird zur
ausführbaren Datei im Repo. Die KI sieht beim nächsten Compose-Schritt
nicht nur den existierenden Code, sondern auch die .cgr-Files, die
die Regeln formulieren. Das ist deutlich verlässlicher als ein langes
Convention-Dokument, das im Context-Window ausläuft.
Beispiel: Eure Team-Konvention "Wir nutzen IClock statt TimeProvider,
weil wir noch nicht auf .NET 8 sind" muss die KI sonst aus existierendem
Code ableiten. Mit CodeGuard schreibt ihr eine Regel:
@name "Use IClock instead of TimeProvider"
@severity error
@category "Team-Conventions"
@recommendation "Inject IClock via constructor and call _clock.UtcNow instead of TimeProvider.System.GetUtcNow()"
from m in Methods
where m.CalledMethods.Any(c => c.FullName.Contains("TimeProvider"))
select m
Die KI bekommt beim nächsten Versuch eine klare Anweisung in der Recommendation und kann den Fix in einem Schritt erzeugen.
PR-Reviews werden inhaltlich
Wenn KI achtzig Prozent eures Codes generiert, soll euer PR-Review nicht mehr über Naming-Konventionen diskutieren. CodeGuard räumt die mechanischen Findings weg, bevor der PR offen ist. Eure menschliche Aufmerksamkeit bleibt für Logik, Architektur-Substanz und Edge-Cases übrig.
Recommendation-Texte für KI-Loops schreiben
Eine @recommendation ist nicht nur ein Hinweis für eure Devs, sondern
auch der Fix-Prompt für die KI. Drei Faustregeln für gute Recommendations.
Konkret statt vage
@recommendation "Fix this"
Das hilft weder Mensch noch KI. Besser:
@recommendation "Add 'CancellationToken cancellationToken = default' as the last parameter"
Code-Snippets sind willkommen
@recommendation "Inject TimeProvider via constructor and call _time.GetUtcNow() instead of DateTime.UtcNow"
Die KI baut die Recommendation als wörtlichen Hinweis in den Fix ein und generiert exakt das, was ihr beschrieben habt.
Hinweise auf etablierte Pattern
@recommendation "Move EF access into a repository class under Acme.Infrastructure.Repositories and inject it via the constructor"
Konkrete Namespace-Vorgaben helfen der KI, den Code an der richtigen Stelle abzulegen.
Setup für die gängigen Tools
Cursor
In .cursorrules:
After every change, run: codeguard analyze MySolution.sln --fail-on error
Fix any findings before considering the change complete. Read the
@recommendation field of each finding for guidance.
Claude Code
In CLAUDE.md:
## Lint-Loop
After making changes, always run `codeguard analyze MySolution.sln --fail-on error`
and fix any errors before reporting completion. The @recommendation field
of each finding tells you how to fix it.
GitHub Copilot mit Agent-Mode
Im Agent-System-Prompt:
Run `codeguard analyze MySolution.sln --fail-on error` after each
change. Findings under 'error' severity block completion. Read the
@recommendation field for fix guidance.
Aider
In .aider.conf.yml:
lint-cmd:
cs: codeguard analyze MySolution.sln --fail-on error
Aider ruft die lint-cmd nach jeder Code-Änderung auf und gibt das
Ergebnis der KI für den nächsten Iterations-Schritt zurück.
Performance in AI-Loops
Eine Analyse mit CodeGuard dauert je nach Solution-Größe wenige Sekunden bis eine Minute. In einer AI-Loop, in der die KI ohnehin nach jeder Code-Änderung den Build laufen lässt, fällt das nicht ins Gewicht.
Weiterführend
- Hello-World-DSL: die erste eigene Regel schreiben
- Best Practices: was gute von schlechten Regeln unterscheidet
- Quick Start: erste Analyse in fünf Minuten