AI Code Review als CI-Gate – was Claude in PRs prüft (und was nicht)
Claude als CI-Reviewer findet Spec-Adherence-Lücken, SQL-Injection-Smell und CAP-Idiom-Verstösse – und übersieht systematisch Performance-Bugs, Race-Conditions und Architektur-Drift. Wo der AI-Reviewer hilft, wo er die menschliche Review nicht ersetzt.
Was Claude im PR-Review wirklich gut macht
Wenn ein Pull Request gegen main aufmacht, läuft bei BAMVP eine GitHub-Action, die u.a. Claude als Reviewer triggert. Claude prüft den Diff gegen die PR-Beschreibung, das ADR und die Coding-Conventions. Output: ein Kommentar-Block mit [approved] oder [changes-requested].
In drei Bereichen ist Claude überraschend gut:
1. Spec-Adherence-Check
Wenn die PR sagt „adds endpoint /api/billing-items/finalize“ und der Code keinen solchen Endpoint hinzufügt – Claude erkennt es. Wenn der Code stattdessen /api/billing-items/close heisst, fragt Claude: „Naming-Diskrepanz, war das beabsichtigt?“. Trifft erstaunlich oft.
2. SQL-Injection-Smell und Hardcoded Secrets
Claude erkennt String-Konkatenation in SQL-Statements. Auch wenn @sap/cds parametrisierte Queries forciert, gibt es Edge-Cases mit cds.run(SELECT.from()...) mit dynamischen Filtern. Hier zeigt Claude rote Karten.
Hardcoded API-Keys, Pfade auf /etc/passwd, Test-Credentials in Konfig – alles sehr zuverlässig.
3. CAP-Idiom-Verstösse
„Du benutzt einen srv.before('READ', …)-Handler, um Daten zu transformieren – der idiomatische Weg ist srv.after('READ', …). Die before-Variante feuert bevor die DB-Query rausgeht, deine Transformation greift nicht.“ Claude liefert solche Hinweise mit erstaunlicher Treffer-Quote.
Was Claude im PR-Review systematisch übersieht
mermaid
flowchart TD
PR[Pull Request]
PR --> Spec{Spec-Adherence?}
Spec -->|gut| Sec
Sec[Security-Smell?] -->|gut| Idiom
Idiom[CAP-Idiom?] -->|gut| Perf
Perf[Performance-Bug?] -->|✗ blind| Race
Race[Race-Condition?] -->|✗ blind| Arch
Arch[Architektur-Drift?] -->|✗ blind| OK[Approve]
style Perf fill:#fecaca,stroke:#b91c1c
style Race fill:#fecaca,stroke:#b91c1c
style Arch fill:#fecaca,stroke:#b91c1c
Performance-Bugs in CAP
Wenn Sie eine Loop schreiben, die in jeder Iteration ein cds.run(SELECT.from()) macht (N+1-Pattern), erkennt Claude den strukturellen Bug nicht. Er sieht: „cool, Loop mit DB-Query, syntaktisch korrekt.“ Was er nicht sieht: dass die 1000-Zeilen-Iteration 1000 SQL-Queries auslöst.
Race-Conditions in async-Handlern
Wenn Ihre srv.before('UPDATE', …)-Handler async eine externe API ruft, ohne Lock, und zwei Requests parallel reinkommen – klassischer Race-Bug. Claude findet ihn nicht. Menschen mit Erfahrung sehen es im Sekundenbruchteil.
Architektur-Drift
„Diese neue Funktion gehört eigentlich in den billing-runs-Service, nicht in den billing-items-Service“ – ist eine Architektur-Aussage, die Kontext über das ADR-Inventar braucht. Claude hat den Kontext nicht und nickt fröhlich durch.
Was im CI-Gate-Konfig stehen muss
```yaml
.github/workflows/pr.yml – relevanter Ausschnitt
ai-review: runs-on: ubuntu-latest needs: [lint, test, sast] steps: - uses: anthropics/claude-pr-review@v2 with: api-key: ${{ secrets.ANTHROPIC_API_KEY }} prompt-template: prompts/cap-pr-review.md max-tokens: 4000 block-on-changes-requested: false # ← wichtig! ```
Der block-on-changes-requested: false ist essentiell. Claude darf merge nicht blockieren. Er kommentiert, ein Mensch entscheidet. Wer das anders konfiguriert, hat in der ersten Woche eine Diskussion mit dem Engineering-Lead, weil Claude einen perfekt korrekten PR blockt mit „dieser Pattern könnte unsicher sein“.
Was den Eval-Loop verbessert
Sammeln Sie quartalsweise: - 20 PRs mit „echten“ Bugs (nach Merge entdeckt) - Was Claude im PR-Review zu diesen 20 PRs sagte - Was er hätte sagen sollen
Aus dieser Sammlung wird Ihr Prompt-Tuning-Set. Nach 60-80 PRs hat Claude einen erkennbar besseren Treffer-Ratio in Ihrer Codebase.
Die ehrliche Erwartungshaltung
Claude im PR-Review ist ein zweiter Junior-Reviewer mit gutem Gedächtnis und hoher Verfügbarkeit. Kein Senior. Wer ihn als Senior konfiguriert (Block-Power, keine menschliche Review nötig), bekommt frustrierte Devs und übersehene strukturelle Bugs.
Wer den Setup einmal fundiert anschauen will
Eine Standortbestimmung (60 Min) prüft Ihre PR-Pipeline und zeigt, wo der AI-Reviewer real Hebel hat – und wo er Ihre Senior-Devs nicht ersetzt. Konkrete Empfehlung pro Pipeline-Stage.
Stand: 2026-05-10
