Code-Review-Checkliste mit Claude Code
Eine praktische Code-Review-Checkliste mit Claude Code zur Verbesserung der Codequalität.
Code-Reviews mit Claude Code optimieren
Code-Reviews sind ein wichtiger Prozess zur Qualitätssicherung, aber die Belastung der Reviewer ist eine Herausforderung. Mit Claude Code können Sie effiziente Reviews auf Basis einer systematischen Checkliste durchführen.
Sicherheitsprüfung
> Überprüfe den Code dieses PR aus Sicherheitsperspektive.
> Prüfe auf XSS, SQL-Injection und Authentifizierungsschwachstellen.
// Sicherheitscheckliste
const securityChecks = {
// 1. Eingabevalidierung
inputValidation: {
check: 'Wird Benutzereingabe bereinigt?',
bad: `element.innerHTML = userInput;`,
good: `element.textContent = userInput;`,
},
// 2. SQL-Injection
sqlInjection: {
check: 'Werden parametrisierte Abfragen verwendet?',
bad: `db.query(\`SELECT * FROM users WHERE id = \${userId}\`);`,
good: `db.query('SELECT * FROM users WHERE id = ?', [userId]);`,
},
// 3. Authentifizierung & Autorisierung
auth: {
check: 'Haben API-Endpunkte Authentifizierungs-Middleware?',
bad: `app.get('/api/admin/users', handler);`,
good: `app.get('/api/admin/users', requireAuth, requireAdmin, handler);`,
},
// 4. Offenlegung von Geheimnissen
secrets: {
check: 'Werden Umgebungsvariablen nicht an den Client weitergegeben?',
bad: `const apiKey = "sk-1234567890abcdef";`,
good: `const apiKey = process.env.API_KEY;`,
},
};
Performance-Prüfung
// Performance-Checkliste
const performanceChecks = [
{
item: 'Gibt es N+1-Abfragen?',
bad: `
const users = await db.user.findMany();
for (const user of users) {
const posts = await db.post.findMany({ where: { userId: user.id } });
}`,
good: `
const users = await db.user.findMany({
include: { posts: true },
});`,
},
{
item: 'Gibt es unnötige Re-Renders?',
bad: `
function Component() {
const handler = () => doSomething();
return <Child onClick={handler} />;
}`,
good: `
function Component() {
const handler = useCallback(() => doSomething(), []);
return <Child onClick={handler} />;
}`,
},
{
item: 'Wird Virtualisierung für große Listen angewendet?',
check: 'Bei Listen mit über 1000 Einträgen → react-virtual in Betracht ziehen',
},
];
Lesbarkeits- und Wartbarkeitsprüfung
> Mache Vorschläge zur Verbesserung der Lesbarkeit dieses Codes.
> Überprüfe Namenskonventionen, Funktionslänge und Angemessenheit der Kommentare.
// Punkte zur Lesbarkeitsüberprüfung
// 1. Funktionslänge (idealerweise unter 30 Zeilen)
// ❌ Alle Verarbeitung in einer Funktion
async function processOrder(order: Order) {
// 100 Zeilen Verarbeitung...
}
// ✅ Nach Verantwortlichkeiten aufteilen
async function processOrder(order: Order) {
const validated = validateOrder(order);
const priced = calculateTotal(validated);
const payment = await processPayment(priced);
return createConfirmation(payment);
}
// 2. Early-Return-Pattern
// ❌ Tiefe Verschachtelung
function getDiscount(user: User) {
if (user) {
if (user.isPremium) {
if (user.orders > 10) {
return 0.2;
}
return 0.1;
}
return 0.05;
}
return 0;
}
// ✅ Early Return
function getDiscount(user: User) {
if (!user) return 0;
if (!user.isPremium) return 0.05;
if (user.orders > 10) return 0.2;
return 0.1;
}
// 3. Magische Zahlen eliminieren
// ❌
if (status === 3) { /* ... */ }
// ✅
const ORDER_STATUS = { PENDING: 1, PROCESSING: 2, COMPLETED: 3 } as const;
if (status === ORDER_STATUS.COMPLETED) { /* ... */ }
Fehlerbehandlungsprüfung
// Prüfpunkte für die Fehlerbehandlung
// ❌ Fehler verschlucken
try {
await saveData(data);
} catch (e) {
// Nichts tun
}
// ✅ Angemessene Fehlerbehandlung
try {
await saveData(data);
} catch (error) {
logger.error('Datenspeicherung fehlgeschlagen', { error, data: data.id });
throw new AppError('SAVE_FAILED', 'Die Datenspeicherung ist fehlgeschlagen', { cause: error });
}
Review-Automatisierungsskript
// scripts/review-check.ts
import { execSync } from 'child_process';
interface ReviewIssue {
file: string;
line: number;
severity: 'error' | 'warning' | 'info';
message: string;
}
function checkForIssues(): ReviewIssue[] {
const issues: ReviewIssue[] = [];
const diff = execSync('git diff --cached --name-only').toString().split('\n');
for (const file of diff.filter(f => f.endsWith('.ts') || f.endsWith('.tsx'))) {
const content = execSync(`git show :${file}`).toString();
const lines = content.split('\n');
lines.forEach((line, index) => {
// console.log-Prüfung
if (line.includes('console.log') && !file.includes('scripts/')) {
issues.push({
file, line: index + 1, severity: 'warning',
message: 'console.log ist noch vorhanden',
});
}
// TODO/FIXME-Prüfung
if (/\/\/\s*(TODO|FIXME|HACK)/i.test(line)) {
issues.push({
file, line: index + 1, severity: 'info',
message: 'TODO/FIXME-Kommentar vorhanden',
});
}
// any-Typ-Prüfung
if (/:\s*any\b/.test(line)) {
issues.push({
file, line: index + 1, severity: 'warning',
message: 'any-Typ wird verwendet',
});
}
});
}
return issues;
}
const issues = checkForIssues();
issues.forEach(i => console.log(`[${i.severity}] ${i.file}:${i.line} - ${i.message}`));
Zusammenfassung
Code-Reviews sind eng mit Teststrategien verknüpft. Mit Claude Code können Sie systematische Reviews aus den Perspektiven Sicherheit, Performance und Lesbarkeit effizient durchführen. In Kombination mit KI-Pair-Programming können Sie Qualität und Geschwindigkeit der Reviews vereinen. Best Practices für Code-Reviews finden Sie unter Google Engineering Practices.
Bring deinen Claude-Code-Workflow aufs nächste Level
50 in der Praxis erprobte Prompt-Vorlagen zum direkten Copy-and-paste in Claude Code.
Kostenloses PDF: Claude-Code-Spickzettel in 5 Minuten
Wichtige Befehle, Shortcuts und Prompt-Beispiele auf einer druckbaren Seite.
Über den Autor
Masa
Ingenieur, der Claude Code intensiv nutzt. Betreibt claudecode-lab.com, ein Tech-Medium in 10 Sprachen mit über 2.000 Seiten.
Ähnliche Artikel
Eigene Slash-Befehle in Claude Code erstellen — Workflow anpassen
Lerne, wie du eigene Slash-Befehle in Claude Code erstellst. Deckt Dateiablage, Argumente und Automatisierung häufiger Aufgaben mit Code-Beispielen ab.
10 Tipps, um Ihre Produktivität mit Claude Code zu verdreifachen
Entdecken Sie 10 praktische Tipps, um mehr aus Claude Code herauszuholen. Von Prompt-Strategien bis zu Workflow-Abkürzungen — diese Techniken steigern Ihre Effizienz ab sofort.
Canvas/WebGL-Optimierung mit Claude Code
Erfahren Sie, wie Sie Canvas/WebGL mit Claude Code optimieren. Mit praktischen Tipps und Codebeispielen.