Skip to content

Code-Review Workflow: /code-review und Sicherheitsaudit

Was Sie nach diesem Tutorial können

Code-Review ist der Schlüssel zur Sicherstellung von Code-Qualität und Sicherheit. Dieses Tutorial hilft Ihnen:

  • ✅ Den /code-review Befehl zur automatischen Prüfung von Code-Änderungen zu verwenden
  • ✅ Den Unterschied zwischen code-reviewer Agent und security-reviewer Agent zu verstehen
  • ✅ Die Sicherheits-Checkliste (OWASP Top 10) zu beherrschen
  • ✅ Häufige Sicherheitslücken zu erkennen und zu beheben (SQL-Injection, XSS, hartcodierte Schlüssel usw.)
  • ✅ Code-Qualitätsstandards anzuwenden (Funktionsgröße, Dateilänge, Testabdeckung usw.)
  • ✅ Die Freigabestandards zu verstehen (CRITICAL, HIGH, MEDIUM, LOW)

Ihre aktuelle Situation

Sie haben Ihren Code geschrieben und möchten committen, aber:

  • ❌ Sie wissen nicht, ob Sicherheitslücken im Code vorhanden sind
  • ❌ Sie befürchten, Code-Qualitätsprobleme übersehen zu haben
  • ❌ Sie sind sich nicht sicher, ob Sie Best Practices befolgt haben
  • ❌ Manuelle Prüfungen sind zeitaufwendig und fehleranfällig
  • ❌ Sie möchten Probleme vor dem Commit automatisch erkennen

Everything Claude Code löst diese Probleme mit dem Code-Review Workflow:

  • Automatisierte Prüfung: Der /code-review Befehl analysiert automatisch alle Änderungen
  • Spezialisierte Reviews: Der code-reviewer Agent konzentriert sich auf Code-Qualität, der security-reviewer Agent auf Sicherheit
  • Standardisierte Einstufung: Probleme werden nach Schweregrad kategorisiert (CRITICAL, HIGH, MEDIUM, LOW)
  • Detaillierte Empfehlungen: Jedes Problem enthält konkrete Behebungsempfehlungen

Wann Sie diese Funktion verwenden sollten

Vor jedem Code-Commit sollte ein Code-Review durchgeführt werden:

  • ✅ Nach Abschluss neuer Funktionen
  • ✅ Nach der Behebung von Bugs
  • ✅ Nach Code-Refactoring
  • ✅ Bei Hinzufügen von API-Endpunkten (security-reviewer erforderlich)
  • ✅ Bei Code, der Benutzereingaben verarbeitet (security-reviewer erforderlich)
  • ✅ Bei Code mit Authentifizierung/Autorisierung (security-reviewer erforderlich)

Best Practice

Gewöhnen Sie sich an: Vor jedem git commit zuerst /code-review ausführen. Bei CRITICAL oder HIGH Problemen zuerst beheben, dann committen.

🎒 Vorbereitung

Was Sie benötigen:

  • Everything Claude Code ist installiert (falls noch nicht, siehe Quick Start)
  • Einige Code-Änderungen (Sie können zuerst mit /tdd etwas Code schreiben)
  • Grundlegende Kenntnisse von Git

Was Sie nicht benötigen:

  • Sie müssen kein Sicherheitsexperte sein (der Agent hilft Ihnen bei der Erkennung)
  • Sie müssen sich nicht alle Sicherheits-Best Practices merken (der Agent erinnert Sie daran)

Kernkonzept

Everything Claude Code bietet zwei spezialisierte Review Agents:

code-reviewer Agent

Fokus auf Code-Qualität und Best Practices, prüft:

  • Code-Qualität: Funktionsgröße (>50 Zeilen), Dateilänge (>800 Zeilen), Verschachtelungstiefe (>4 Ebenen)
  • Fehlerbehandlung: Fehlende try/catch, console.log Anweisungen
  • Code-Konventionen: Namenskonventionen, duplizierter Code, unveränderliche Muster
  • Best Practices: Emoji-Verwendung, TODO/FIXME ohne Ticket, fehlende JSDoc
  • Testabdeckung: Neue Code ohne Tests

Anwendungsfall: Alle Code-Änderungen sollten den code-reviewer durchlaufen.

security-reviewer Agent

Fokus auf Sicherheitslücken und Bedrohungen, prüft:

  • OWASP Top 10: SQL-Injection, XSS, CSRF, Authentifizierungsumgehung usw.
  • Schlüssellecks: Hartcodierte API-Keys, Passwörter, Tokens
  • Eingabevalidierung: Fehlende oder unzureichende Benutzereingabevalidierung
  • Authentifizierung und Autorisierung: Unzureichende Authentifizierung und Berechtigungsprüfungen
  • Abhängigkeitssicherheit: Veraltete oder bekannte anfällige Pakete

Anwendungsfall: Sicherheitskritischer Code (APIs, Authentifizierung, Zahlungen, Benutzereingaben) muss den security-reviewer durchlaufen.

Schweregrade der Probleme

LevelBedeutungBlockiert Commit?Beispiel
CRITICALKritische Sicherheitslücke oder schwerwiegendes Qualitätsproblem❌ Muss blockiert werdenHartcodierter API-Key, SQL-Injection
HIGHWichtiges Sicherheits- oder Code-Qualitätsproblem❌ Muss blockiert werdenFehlende Fehlerbehandlung, XSS-Lücke
MEDIUMMittlere Priorität⚠️ Vorsichtig committen möglichEmoji-Verwendung, fehlende JSDoc
LOWGeringfügiges Problem✓ Kann später behoben werdenFormatierungsinkonsistenzen, magische Zahlen

Schritt-für-Schritt: Ihr erstes Code-Review

Schritt 1: Code-Änderungen erstellen

Verwenden Sie zuerst /tdd, um einen einfachen API-Endpunkt zu erstellen (mit einigen Sicherheitsrisiken):

bash
/tdd

Lassen Sie Claude Code eine Benutzer-Login-API erstellen, etwa so:

typescript
// src/api/login.ts
export async function loginUser(email: string, password: string) {
  const query = `SELECT * FROM users WHERE email = '${email}'`  // ❌ SQL-Injection Risiko
  const user = await db.query(query)
  
  if (user.password === password) {  // ❌ Klartext-Passwort-Vergleich
    const token = generateToken(user.id)
    console.log('User logged in:', { email, password })  // ❌ Passwort im Log
    return { token }
  }
}

Warum Dieser Code enthält mehrere Sicherheitsrisiken und Code-Qualitätsprobleme, ideal zur Demonstration der Code-Review Funktion.

Sie sollten sehen: Die Codedatei wurde erstellt.


Schritt 2: Code-Review ausführen

Führen Sie nun den /code-review Befehl aus:

bash
/code-review

Warum/code-review ruft automatisch den code-reviewer Agent auf, um alle uncommitteten Änderungen zu prüfen.

Sie sollten sehen: Der Agent beginnt mit der Code-Analyse und gibt dann den Review-Bericht aus.


Schritt 3: Review-Bericht anzeigen

Der code-reviewer gibt einen Bericht ähnlich diesem aus:

markdown
# Code Review Report

## Critical Issues (Fix Immediately)

### 1. [CRITICAL] Hardcoded credentials
**File:** src/api/login.ts:3
**Issue:** Password logging in console
**Fix:** Remove password from logs, only log user ID

```typescript
// ❌ Bad
console.log('User logged in:', { email, password })

// ✓ Good
console.log('User logged in:', { email, userId: user.id })

2. [CRITICAL] SQL injection vulnerability

File: src/api/login.ts:2 Issue: String concatenation in SQL query Fix: Use parameterized queries

typescript
// ❌ Bad
const query = `SELECT * FROM users WHERE email = '${email}'`

// ✓ Good
const { data } = await supabase
  .from('users')
  .select('*')
  .eq('email', email)

High Issues (Fix Before Production)

3. [HIGH] Plaintext password comparison

File: src/api/login.ts:4 Issue: Password stored in plaintext Fix: Use bcrypt to hash passwords

typescript
// ❌ Bad
if (user.password === password) {

// ✓ Good
import bcrypt from 'bcrypt'
const isValid = await bcrypt.compare(password, user.password)

Recommendations

  1. Add input validation for email format
  2. Add rate limiting to prevent brute force attacks
  3. Use JWT tokens instead of generating custom tokens

Approval Status

❌ BLOCKED - 2 CRITICAL issues found

Please fix all CRITICAL and HIGH issues before committing.


**Warum**
Der Bericht ist nach Schweregrad kategorisiert, jedes Problem enthält Position, Beschreibung, Behebungsempfehlung und Code-Beispiel.

**Sie sollten sehen**: Einen klaren Review-Bericht, der alle Probleme und Behebungsempfehlungen aufzeigt.

---

### Schritt 4: Probleme beheben

Beheben Sie die Probleme gemäß dem Bericht:

```typescript
// src/api/login.ts
import bcrypt from 'bcrypt'
import { z } from 'zod'

const LoginSchema = z.object({
  email: z.string().email(),
  password: z.string().min(8)
})

export async function loginUser(input: unknown) {
  // Eingabevalidierung
  const validated = LoginSchema.parse(input)
  
  // Parametrisierte Abfrage (SQL-Injection verhindern)
  const { data: user } = await supabase
    .from('users')
    .select('*')
    .eq('email', validated.email)
    .single()
  
  if (!user) {
    throw new Error('Invalid credentials')
  }
  
  // Hash-Passwort-Vergleich
  const isValid = await bcrypt.compare(validated.password, user.password_hash)
  
  if (isValid) {
    const token = generateToken(user.id)
    console.log('User logged in:', { email: validated.email, userId: user.id })
    return { token }
  }
  
  throw new Error('Invalid credentials')
}

Warum Alle CRITICAL und HIGH Probleme beheben, Eingabevalidierung und Hash-Passwort-Vergleich hinzufügen.

Sie sollten sehen: Der Code wurde aktualisiert, Sicherheitsrisiken wurden beseitigt.


Schritt 5: Erneute Prüfung

Führen Sie /code-review erneut aus:

bash
/code-review

Warum Überprüfen, ob alle Probleme behoben wurden und der Code committet werden kann.

Sie sollten sehen: Einen Genehmigungsbericht ähnlich diesem:

markdown
# Code Review Report

## Summary

- **Critical Issues:** 0 ✓
- **High Issues:** 0 ✓
- **Medium Issues:** 1 ⚠️
- **Low Issues:** 1 💡

## Medium Issues (Fix When Possible)

### 1. [MEDIUM] Missing JSDoc for public API
**File:** src/api/login.ts:9
**Issue:** loginUser function missing documentation
**Fix:** Add JSDoc comments

```typescript
/**
 * Authenticates a user with email and password
 * @param input - Login credentials (email, password)
 * @returns Object with JWT token
 * @throws Error if credentials invalid
 */
export async function loginUser(input: unknown) {

Low Issues (Consider Fixing)

2. [LOW] Add rate limiting

File: src/api/login.ts:9 Issue: Login endpoint lacks rate limiting Fix: Add express-rate-limit middleware

typescript
import rateLimit from 'express-rate-limit'

const loginLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 5 // 5 attempts per window
})

app.post('/api/login', loginLimiter, loginUser)

Approval Status

✅ APPROVED - No CRITICAL or HIGH issues

Note: Medium and Low issues can be fixed in follow-up commits.


**Sie sollten sehen**: Das Review wurde genehmigt, der Code kann committet werden.

---

### Schritt 6: Sicherheits-Spezialreview (optional)

Wenn Ihr Code API-Endpunkte, Authentifizierung, Zahlungen oder andere sicherheitskritische Funktionen enthält, können Sie speziell den security-reviewer aufrufen:

```bash
/security-reviewer

Warum Der security-reviewer führt eine tiefere OWASP Top 10 Analyse durch und prüft weitere Sicherheitslücken-Muster.

Sie sollten sehen: Einen detaillierten Sicherheits-Review-Bericht, einschließlich OWASP-Analyse, Abhängigkeitslücken-Prüfung, Sicherheits-Tool-Empfehlungen usw.


Checkliste ✅

Nach Abschluss der obigen Schritte sollten Sie:

  • ✅ Den /code-review Befehl ausführen können
  • ✅ Die Struktur und den Inhalt des Review-Berichts verstehen
  • ✅ Code-Probleme gemäß dem Bericht beheben können
  • ✅ Wissen, dass CRITICAL und HIGH Probleme behoben werden müssen
  • ✅ Den Unterschied zwischen code-reviewer und security-reviewer verstehen
  • ✅ Die Gewohnheit entwickelt haben, vor dem Commit zu reviewen

Häufige Fehler

Häufiger Fehler 1: Code-Review überspringen

Problem: Denken, der Code ist einfach, direkt committen, ohne Review.

Konsequenz: Sicherheitslücken können übersehen werden, CI/CD verweigert oder Produktionsprobleme verursachen.

Richtige Vorgehensweise: Gewöhnen Sie sich an, vor jedem Commit /code-review auszuführen.


Häufiger Fehler 2: MEDIUM Probleme ignorieren

Problem: MEDIUM Probleme sehen und ignorieren, sich ansammeln lassen.

Konsequenz: Code-Qualität sinkt, technische Schulden akkumulieren, später schwer zu warten.

Richtige Vorgehensweise: Obwohl MEDIUM Probleme den Commit nicht blockieren, sollten sie in angemessener Zeit behoben werden.


Häufiger Fehler 3: SQL-Injection manuell beheben

Problem: Eigene String-Escaping schreiben, statt parametrisierte Abfragen zu verwenden.

Konsequenz: Escaping unvollständig, weiterhin SQL-Injection Risiko.

Richtige Vorgehensweise: Immer ORM oder parametrisierte Abfragen verwenden, niemals SQL manuell zusammensetzen.


Häufiger Fehler 4: Beide Reviewer verwechseln

Problem: Für allen Code nur code-reviewer ausführen, security-reviewer ignorieren.

Konsequenz: Sicherheitslücken können übersehen werden, besonders bei APIs, Authentifizierung, Zahlungen.

Richtige Vorgehensweise:

  • Normaler Code: code-reviewer ausreichend
  • Sicherheitskritischer Code: Muss zusätzlich security-reviewer durchlaufen

Zusammenfassung

Der Code-Review Workflow ist eine der Kernfunktionen von Everything Claude Code:

FunktionAgentPrüfinhaltSchweregrad
Code-Qualitäts-Reviewcode-reviewerFunktionsgröße, Fehlerbehandlung, Best PracticesHIGH/MEDIUM/LOW
Sicherheits-Reviewsecurity-reviewerOWASP Top 10, Schlüssellecks, Injection-LückenCRITICAL/HIGH/MEDIUM

Wichtige Punkte:

  1. Vor jedem Commit /code-review ausführen
  2. CRITICAL/HIGH Probleme müssen vor dem Commit behoben werden
  3. Sicherheitskritischer Code muss den security-reviewer durchlaufen
  4. Review-Bericht enthält detaillierte Positionen und Behebungsempfehlungen
  5. Gewohnheit entwickeln: Review → Beheben → Erneutes Review → Commit

Vorschau auf die nächste Lektion

In der nächsten Lektion lernen wir Hooks Automation.

Sie werden lernen:

  • Was Hooks sind und wie Entwicklungsprozesse automatisiert werden
  • Die Verwendung von 15+ Automatisierungs-Hooks
  • Wie Hooks an Projektanforderungen angepasst werden
  • Anwendungsszenarien für SessionStart, SessionEnd, PreToolUse usw.

Anhang: Quellcode-Referenz

Klicken zum Anzeigen der Quellcode-Position

Aktualisiert: 2026-01-25

FunktionDateipfadZeilennummer
---------
---------
---------
---------
---------

Wichtige Konstanten:

  • Funktionsgrößenlimit: 50 Zeilen (code-reviewer.md:47)
  • Dateigrößenlimit: 800 Zeilen (code-reviewer.md:48)
  • Verschachtelungstiefenlimit: 4 Ebenen (code-reviewer.md:49)

Wichtige Funktionen:

  • /code-review: Ruft code-reviewer Agent für Code-Qualitäts-Review auf
  • /security-reviewer: Ruft security-reviewer Agent für Sicherheitsaudit auf
  • git diff --name-only HEAD: Ruft uncommittete Änderungsdateien ab (code-review.md:5)

Freigabestandards (code-reviewer.md:90-92):

  • ✅ Approve: Keine CRITICAL oder HIGH Probleme
  • ⚠️ Warning: Nur MEDIUM Probleme (vorsichtig mergen möglich)
  • ❌ Block: CRITICAL oder HIGH Probleme gefunden