Code Review Checklist for Authors and Reviewers (2026)
A copy-paste code review checklist split into an author pre-flight and a reviewer pass - covering correctness, security, tests, readability, and what to leave to tools.
Published:
Why a checklist beats reviewing from memory
Everyone thinks they review the same way every time. Nobody does. Attention drifts, the same three habitual comments come out, and the security question that mattered on Tuesday gets skipped on Friday. A checklist is not a bureaucratic ritual - it is a way to make your review consistent regardless of mood, time pressure, or how much you like the author.
The best checklists are short, split by role, and ruthless about what they exclude. The single biggest mistake is loading a checklist with items a machine should own - spacing, import order, lint rules - which trains reviewers to skim past the whole thing. The takeaway - a checklist earns trust by containing only judgment calls a human has to make, and delegating everything else to tools.
This is a practical, copy-paste checklist. For a one-line definition to drop in a wiki, see the code review checklist glossary entry.
The author pre-flight checklist
Half of a fast review happens before the reviewer ever opens the PR. Run this on yourself first:
### Before I request review
- [ ] I reviewed my own diff, line by line, and I understand every line
- [ ] The PR is small - under ~250 lines of meaningful change
- [ ] The description says what changed and WHY
- [ ] Tests pass locally and in CI, and I added tests for new behavior
- [ ] No debug logging, commented-out code, secrets, or TODOs left in
- [ ] Refactors are split out from behavior changes
- [ ] I flagged the risky files and told the reviewer where to focus
The self-review line is the highest-value item on this page. Reading your own diff as if a stranger wrote it catches a startling share of defects before anyone else spends a minute. The reviewer’s job is to check your work, not to be your first reader.
The takeaway - the author’s checklist exists to make the change small, tested, and self-explanatory before a second person is asked to spend attention on it.
The reviewer checklist
Once the PR is genuinely reviewable, work through it in roughly this order - correctness first, polish last, because time and attention run out and you want them spent on what matters most.
Correctness and logic
- [ ] The code does what the description claims
- [ ] Edge cases handled - empty, null, zero, max, concurrent, unicode
- [ ] Off-by-one, boundary, and loop-termination conditions are right
- [ ] Error and failure paths are handled, not just the happy path
- [ ] No obvious race conditions or shared-state mutation
Security
- [ ] User input is validated and sanitized
- [ ] No SQL/command injection or unsafe deserialization
- [ ] Secrets are not hardcoded or logged
- [ ] AuthN/authZ checks are present where they should be
- [ ] New dependencies are trustworthy and pinned
Tests
- [ ] Tests actually assert behavior, not just that code runs
- [ ] New logic and its edge cases are covered
- [ ] Tests are deterministic - no reliance on timing or ordering
Design and readability
- [ ] Names reveal intent; the code reads without the description
- [ ] No needless complexity or premature abstraction
- [ ] Change fits existing patterns or justifies deviating
- [ ] No copy-pasted duplication that should be shared
Notice what is absent - formatting, brace style, import ordering. Those belong to a formatter and a linter that run in CI. If your reviewers still comment on them, you have a linter gap, not a review-discipline problem.
What to delegate to tools
A human reviewer is expensive and their attention is finite. Spend it on correctness, security, and design - the things tools are still weak at - and let automation own the mechanical layer. Here is a sane division of labor:
| Concern | Owner |
|---|---|
| Formatting, style, import order | Formatter (Prettier, Black, gofmt) |
| Lint rules, unused vars, simple bugs | Linter (ESLint, Ruff, etc.) |
| Known-vulnerable dependencies | SCA / security scanner |
| First-pass logic and edge-case review | AI reviewer |
| Correctness, design, security judgment | Human reviewer |
An AI reviewer runs the mechanical and first-pass parts of this checklist automatically on every PR, so the human opens a change that has already been triaged. CodeRabbit posts a PR summary and inline suggestions within minutes and ships 40-plus built-in linters plus auto-fix suggestions, and it accepts custom review instructions in natural language - so you can encode parts of your checklist as standing rules it enforces on every PR (source - CodeRabbit tool page).
Greptile indexes your entire codebase and reviews each PR with that whole-repo context, attaching confidence scores to its findings - which helps with the “does this fit existing patterns” and cross-file-correctness items that a diff-only reviewer cannot judge (source - Greptile tool page). And Qodo, a Gartner-recognized Visionary, pairs agentic PR review with automatic test generation, which directly supports the tests section of the checklist by proposing cases for uncovered paths (source - Qodo tool page). For a wider comparison, see our roundup of the best AI PR review tools.
Using the checklist without turning review into box-ticking
A checklist can curdle into ritual if you let it. Guardrails that keep it useful:
- Not every item applies to every PR. A docs change does not need the security section. Use judgment about which parts are relevant.
- Depth should scale with risk. A payment path deserves the full pass; a copy tweak does not. Match review depth to blast radius.
- Separate blocking from optional. A checklist finding that is a genuine defect blocks the merge; a preference is a nitpick and should be labeled as one. Conflating the two frustrates authors - more on that in how to give code review feedback.
- Keep it living. When a class of bug slips through, add one line to the checklist. When an item never catches anything, delete it.
Conclusion
A code review checklist turns review from an inconsistent, mood-dependent act into a repeatable one. Split it - an author pre-flight that makes the change small and self-explanatory, and a reviewer pass that judges correctness, security, tests, and design in that priority order. Delegate every mechanical concern to formatters, linters, and an AI reviewer so human attention lands on the judgment calls machines still cannot make. Pair the checklist with small PRs and clear feedback norms and your reviews get both faster and more thorough at the same time.
Further reading
- Code Review Best Practices
- How to Give Code Review Feedback That Lands
- Pull Request Size Best Practices
- How to Review AI-Generated Code
- Best AI PR Review Tools in 2026
Further Reading
GitarComments are not enough
Gitar applies the fix, validates it in CI, and clears the queue.
See it on your repo Read our independent Gitar reviewFrequently Asked Questions
What should a code review checklist include?
A useful checklist has two halves. The author pre-flight covers self-review, small PR size, passing tests, and a clear description. The reviewer pass covers correctness, edge cases, security, error handling, test quality, and readability. Deliberately leave formatting, style, and lint rules off the human checklist - those belong to automated tools so reviewers can spend attention on design and logic.
What is the difference between an author and reviewer checklist?
The author checklist runs before the PR is opened and is about making the change easy to review - self-review the diff, keep it small, write a clear description, ensure tests pass. The reviewer checklist runs during review and is about judging the change - correctness, security, edge cases, and maintainability. Splitting them stops the author and reviewer from duplicating each other's work.
Should code style be on a code review checklist?
No. Formatting, naming conventions, and lint rules should be enforced by formatters and linters in CI, not by human reviewers. If people are still arguing about spacing or import order in review, that is a tooling gap. Keep the human checklist focused on things a machine cannot judge - is this correct, is it secure, is it the right design.
How long should a code review take?
For a well-sized PR of under about 250 lines, a thorough review usually takes 10 to 30 minutes. Research on review effectiveness suggests defect detection drops when a single sitting runs much past 60 minutes, so for larger changes review in multiple passes or ask the author to split the PR. Speed comes from small PRs, not from rushing.
Explore More
Tool Reviews
Related Articles
Free Newsletter
Stay ahead with AI dev tools
Weekly insights on AI code review, static analysis, and developer productivity. No spam, unsubscribe anytime.
Join developers getting weekly AI tool insights.
Related Articles
Is CodeRabbit Free for Open Source? Yes - And for Private Repos Too
CodeRabbit's free tier covers unlimited public and private repositories, not just open source. Here is exactly what the free plan includes, where the rate limits bite, and when to pay.
July 31, 2026
guideIs SonarLint Deprecated? No - Here's What Actually Happened
SonarLint was not deprecated. It was renamed to SonarQube for IDE on October 29, 2024, as part of a company-wide rebrand. Here is what changed, what did not, and what to install.
July 31, 2026
guideIs Semgrep Free for Commercial Use? Yes, With Two Catches
Semgrep Community Edition is LGPL-2.1 and free for commercial use. The paid tier is also free up to 10 contributors. Here is where the line actually falls and what you give up.
July 31, 2026
CodeRabbit Review
Qodo Review