返回评测
代码生成 代码-工程交付 未饱和 模态 · 代码 任务 · 执行验证

Defects4J

835 个来自真实 Java 项目的缺陷及修复补丁,自动程序修复的标准基准

University of Massachusetts ·

考察能力

缺陷修复 代码理解 测试驱动修复

构建信息

数据规模
835 bugs from 17 projects
评测方式
测试通过率
核心指标
Plausible / Correct patches

模型效果排行

🥇 GPT-4o
~51% correct
🥈 Claude 3.5 Sonnet
~48% correct

为什么重要

Defects4J 是自动程序修复(APR)领域引用最高的基准,包含真实项目(Commons Lang、JFreeChart、Closure 等)的真实 bug。它定义了”正确修复”(不仅通过测试,还语义正确)的评测标准。

构建方式

  1. 从真实 Java 开源项目的 commit history 中提取 bug-fix 对
  2. 每个缺陷附带触发测试
  3. 人工验证修复补丁的正确性

任务示例

给定一个包含 bug 的 Java 类和失败的测试用例,生成正确的修复补丁。

关键发现

  • LLM 生成的补丁经常”过拟合测试”(plausible but incorrect)
  • 测试驱动的修复远未解决
  • 跨项目泛化仍是主要挑战

关联基准

不足与展望

  • 仅限 Java 生态
  • 部分 bug 较简单(单行修复)
  • 但作为 APR 基准的地位不可动摇
缺陷修复 Java APR 经典基准