SWE-PRBench: Benchmarking AI Code Review Quality Against Pull Request Feedback
Organizations: Independent Researcher
Abstract
We introduce SWE-PRBench, a benchmark of 350 pull requests with human-annotated ground truth for evaluating AI code review quality. Evaluated against an LLM-as-judge framework validated at kappa=0.75, 8 frontier models detect only 15-31% of human-flagged issues on the diff-only configuration, demonstrating that AI code review remains far below human expert performance despite strong results on code generation benchmarks. Pull requests are drawn from active open-source repositories, filtered from 700 candidates using a Repository Quality Score, and evaluated under three frozen context configurations: diff only (config_A), diff with file content (config_B), and full context (config_C), enabling systematic ablation of context provision strategies. All 8 models degrade monotonically from config_A to config_C, even when context is provided via structured semantic layers including AST-extracted function context and import graph resolution. The dominant mechanism is a collapse of Type2_Contextual issue detection at config_B, consistent with attention dilution in long contexts: a structured 2,000-token diff-with-summary prompt outperforms a 2,500-token full-context prompt enriched with execution context, behaviour mapping, and test signatures across all 8 models. The top four models are statistically indistinguishable (mean score 0.147-0.153) while a clear tier gap separates them from the remaining four (mean score <= 0.113). Dataset, contexts, annotations, and evaluation harness are released publicly.
Figures & tables
| Property | CodeReviewer | DeepCRCEval | RovoDev | SWE-PRBench (Ours) |
|---|---|---|---|---|
| Primary contribution | Model + dataset | Eval metrics | Production tool | Dataset + protocol |
| Ground truth source | Synthetic pairs | Generated | CRR metric only | Human reviewers ∗ |
| Source links retained | No | No | N/A | Yes |
| Difficulty taxonomy | None | None | None | 3 types |
| Context configs | None | None | None | 3 frozen |
| Issue detection eval | No | No | Partial | Yes |
| Component | What it measures | Max pts |
|---|---|---|
| Review culture | Share of substantive human review comments | 30 |
| PR recency | Merged PRs in last 90 days | 25 |
| Test quality | Test files, CI presence, coverage tooling | 20 |
| PR volume | Average monthly merged PRs over 6 months | 15 |
| Contamination | Inverse of star count | 10 |
| Total | 100 |
| Stage | Count | Retention |
|---|---|---|
| Raw PRs collected | 3,000 | 100% |
| After 10-stage hard filter | 700 | 23% |
| After RVS 0.35 | 350 | 12% |
| Released (annotated) | 350 | — |
| Property | Value |
|---|---|
| Total PRs | 350 |
| Candidate pool (before RVS cut) | 700 |
| Repositories (RQS-qualified) | 100 |
| Repositories (contributing PRs) | 65 |
| PRs per contributing repo (min/mean/max) | 1 / 5.4 / 30 |
| Language distribution | |
| Language | Type1 | Type2 | Type3 | Total |
|---|---|---|---|---|
| Python | 160 | 50 | 32 | 242 |
| JavaScript | 24 | 7 | 6 | 37 |
| Go | 24 | 8 | 3 | 35 |
| TypeScript | 13 | 7 | 1 | 21 |
| Java | 11 | 3 | 1 | 15 |
| All | 232 | 75 | 43 | 350 |
| Config | Layers | Analogue | Budget |
|---|---|---|---|
| config_A | Task focus (L0), Key changes summary (L1), Diff (L2), Minimal metadata (L6) | GitHub PR email notification | 2,000 tokens |
| config_B | + Execution context (L3), Behaviour mapping (L4) | GitHub PR web view with file context | 2,200 tokens |
| config_C | + Test signatures (L5) | Reviewer with test suite access | 2,500 tokens |
| Config | Agreement | GPT-5.2 proxy | Sonnet proxy | |
|---|---|---|---|---|
| config_A | 46 | 78.3% | 0.035 | 0.033 |
| config_B | 40 | 72.5% | 0.063 | 0.045 |
| config_C | 41 | 85.4% | 0.066 | 0.070 |
| Overall | 127 | 78.7% ( ) | direction: A B C confirmed | |
| Model | DR A | FPR avg | ||||
|---|---|---|---|---|---|---|
| Claude Haiku 4.5 ‡ | 0.172 | 0.129 | 0.126 | 0.153 | 0.306 | 0.346 |
| Claude Sonnet 4.6 † | 0.190 | 0.135 | 0.122 | 0.152 | 0.297 | 0.227 |
| DeepSeek V3 | 0.181 | 0.132 | 0.118 | 0.150 | 0.312 | 0.315 |
| Mistral Large 3 | 0.170 | 0.125 | 0.135 | 0.147 | 0.305 | 0.353 |
| GPT-4o | 0.134 | 0.110 | 0.090 | 0.113 | 0.220 | 0.193 |
| GPT-4o-mini | 0.110 | 0.095 | 0.093 | 0.108 | 0.210 | 0.353 |
| Model | Difficulty | A | B | C | Trend |
|---|---|---|---|---|---|
| Claude Sonnet 4.6 | Type1 | 0.18 | 0.19 | 0.14 | stable |
| Type2 | 0.22 | 0.10 | 0.09 | collapse | |
| Type3 | 0.17 | 0.13 | 0.14 | stable | |
| DeepSeek V3 | Type1 | 0.21 | 0.19 | 0.16 | gradual |
| Type2 | 0.20 | 0.10 | 0.10 | collapse | |
| Type3 | 0.12 | 0.12 | 0.11 | stable |
| RQ | Question | Answer | Evidence |
|---|---|---|---|
| 1 | Detection rate and FPR | 15–31% on config_A ; FPR 0.193–0.417 | Table 8 |
| 2 | Context direction | All models degrade A B C | Figure 2 |
| 3 | Uniformity | Universal direction; Type2 drives the A B drop | Table 9 |
| 4 | Hard categories | Type2 collapses at config_B ; Type3 near-zero | Figure 3 |
Automated Code Review
Automated code review uses software analysis and AI to find defects, assess changes, and support pull-request decisions.
See all 45 papers