为什么重要
Defects4J 是自动程序修复(APR)领域引用最高的基准,包含真实项目(Commons Lang、JFreeChart、Closure 等)的真实 bug。它定义了”正确修复”(不仅通过测试,还语义正确)的评测标准。
构建方式
- 从真实 Java 开源项目的 commit history 中提取 bug-fix 对
- 每个缺陷附带触发测试
- 人工验证修复补丁的正确性
任务示例
给定一个包含 bug 的 Java 类和失败的测试用例,生成正确的修复补丁。
关键发现
- LLM 生成的补丁经常”过拟合测试”(plausible but incorrect)
- 测试驱动的修复远未解决
- 跨项目泛化仍是主要挑战
关联基准
不足与展望
- 仅限 Java 生态
- 部分 bug 较简单(单行修复)
- 但作为 APR 基准的地位不可动摇