编辑,但验证:指导代码编辑基准的实证审计
Edit, But Verify: An Empirical Audit of Instructed Code-Editing Benchmarks
摘要
指令代码编辑(LLM 基于自然语言指令修改现有代码)约占现实世界编码助手交互的 19%。然而很少有基准测试直接评估这种能力。通过对 150 多个与代码相关的基准测试的调查,我们发现只有 CanItEdit 和 EDIT-Bench 两个基准测试通过人工编写的指令和基于测试的评估来指导代码编辑。我们通过将它们的编程语言、编辑意图和应用程序域与在野外观察到的分布(Copilot Arena、AIDev、GitHub Octoverse)进行比较,并通过测量所有 213 个问题的测试计数、语句覆盖率和测试范围来进行审核。这两个基准测试都将超过 90% 的评估集中在 Python 上,而 GitHub 最常用的语言 TypeScript 却没有出现。后端和前端开发总共占现实世界编辑活动的 46%,但大部分都缺失了,而文档、测试和维护编辑(占人类 PR 的 31.4%)的代表性为零。尽管 CanItEdit 通过近乎完整的整个文件覆盖率和验证前失败/通过后验证进行了补偿,但两个基准测试的测试计数均适中(CanItEdit 中位数为 13,EDIT-Bench 中位数为 4)。 59% 的 EDIT-Bench 低覆盖率套件无法检测编辑区域之外的修改。 EDIT-Bench 有 15 个问题没有被 40 个 LLM 中的任何一个解决,其中 11 个问题将失败归因于较差的基准工件而不是模型限制。此外,29% 的 EDIT-Bench 问题和 6% 的 CanItEdit 问题与基准测试中至少一个其他问题共享代码库。总之,这些基准衡量的结构比部署决策所需的要窄。因此,我们提出了六个基于经验的需求,并发布了所有审计工件,以便社区可以构建指导性代码编辑基准,其分数可靠地反映现实世界的编辑能力。