Code Review Checklist
Structured approach to reviewing code changes.
Review Priority Order
-
Security (Critical) - Vulnerabilities, secrets, injection
-
Correctness (High) - Logic errors, breaking changes
-
Performance (Medium) - Inefficiencies, resource leaks
-
Quality (Medium) - Maintainability, readability
-
Style (Low) - Formatting, naming (should be automated)
Security Checklist
Secrets & Credentials
-
No hardcoded API keys, passwords, tokens
-
No credentials in logs or error messages
-
Secrets loaded from environment/vault
Injection Vulnerabilities
-
SQL queries use parameterized statements
-
User input is sanitized before HTML output (XSS)
-
Shell commands don't include user input (command injection)
-
File paths are validated (path traversal)
Authentication & Authorization
-
Auth checks on all protected endpoints
-
Proper session handling
-
Secure password handling (hashing, not plaintext)
Data Exposure
-
Sensitive data not logged
-
API responses don't leak internal details
-
Error messages don't expose system info
Correctness Checklist
Logic
-
Edge cases handled (null, empty, boundary values)
-
Error conditions handled appropriately
-
Async operations properly awaited
-
Race conditions considered
Breaking Changes
-
API contracts maintained
-
Database migrations are reversible
-
Feature flags for risky changes
Testing
-
New code has tests
-
Tests cover error paths, not just happy path
-
Existing tests still pass
Performance Checklist
Efficiency
-
No N+1 queries
-
Appropriate data structures used
-
No unnecessary loops or iterations
-
Caching considered for expensive operations
Resources
-
Database connections closed/pooled
-
File handles closed
-
No memory leaks (event listeners removed, etc.)
Scale
-
Works with realistic data volumes
-
Pagination for large result sets
-
Timeouts on external calls
Quality Checklist
Readability
-
Clear, descriptive names
-
Functions do one thing
-
No overly complex conditionals
-
Comments explain "why", not "what"
Maintainability
-
DRY (no copy-paste duplication)
-
Appropriate abstractions
-
Dependencies are justified
-
No dead code
Consistency
-
Follows project patterns
-
Matches existing code style
-
Uses established utilities/helpers
Review Output Format
Review: [PR Title]
Risk Level: LOW | MEDIUM | HIGH | CRITICAL
Critical Issues
- [Category] Description (file:line)
- Impact: What could go wrong
- Fix: Specific recommendation
Suggestions
- [Category] Description (file:line)
- Why: Reasoning
- Consider: Alternative approach
Positive Notes
- [Recognition of good patterns]
Quick Checks
For fast reviews, at minimum check:
-
Any secrets or credentials?
-
Any SQL/command injection?
-
Are error cases handled?
-
Do tests exist for new code?