[Paper] RepoMod-Bench:用于代码仓库现代化的实现无关测试基准
发布: (2026年2月26日 GMT+8 09:25)
6 分钟阅读
原文: arXiv
Source: arXiv - 2602.22518v1
概述
本文介绍了 RepoMod‑Bench,这是一项新基准,用于衡量 AI 驱动的编码代理在现代化整个代码仓库方面的表现。通过使用对实现无关(黑盒)的隐藏测试,作者提供了一种确定性的、语言无关的方式来评估原始代码与现代化后代码之间的功能等价性——这是以往基准难以实现的目标。
关键贡献
- 大规模、多语言基准:21 个真实世界的代码库(14 K–211 K 行代码),涵盖 8 种编程语言,总计 160 万行代码和 11 616 个测试。
- 实现无关的评估:测试以黑盒二进制形式执行,防止代理通过读取或针对测试套件进行“作弊”。
- 标准化接口:每个代码库都使用统一的 API 包装,实现跨语言的功能检查。
- 实证基线:对四种最先进的 AI 编码代理进行评估,显示随着代码库规模增长,通过率出现显著下降(91 % → 15 %)。
- 开源发布:基准数据、测试框架和评估脚本已在 GitHub 上公开。
方法论
- 仓库选择 – 选择真实世界的开源项目,以实现多样性(不同领域、语言和规模),并且拥有明确的“源”实现,可作为真实答案。
- 接口标准化 – 为每个仓库添加一个薄层封装,暴露一组函数(例如
parse()、serialize()),这些函数与语言无关。这样相同的测试框架即可调用任何语言的实现。 - 与实现无关的测试套件 – 测试被编译成特定语言的二进制文件,运行标准化接口并将输出与原始仓库的行为进行比较。测试二进制不向 AI 代理公开。
- 代理配置 – 四种主流代码生成代理(例如基于 Codex、基于 GPT‑4,以及两个开源模型)在未看到测试的情况下,被提示对每个仓库进行翻译或重构。
- 评分 – 对每个仓库计算通过率:隐藏测试中现代化代码通过的比例。结果按规模区间(<10 K 行代码,10–50 K 行代码,>50 K 行代码)进行汇总。
Results & Findings
| 大小区间 | 平均通过率(基线代理) |
|---|---|
| < 10 K LOC | 91.3 % |
| 10–50 K LOC | 38.7 % |
| > 50 K LOC | 15.3 % |
- 规模崩塌:随着代码库规模的增长,性能急剧下降,表明当前的代理在大规模架构推理方面仍有困难。
- 语言鲁棒性:在所有八种语言中的通过率始终偏低,说明瓶颈并非语言特定,而是管理复杂代码库的能力不足。
- 隐藏测试的有效性:由于代理从未看到测试,用例分数低不能归咎于对可见测试套件的过拟合;这反映了真实的功能缺口。
实际意义
- 工具开发者:如果您正在构建 AI 辅助的重构或迁移工具,RepoMod‑Bench 提供了一个真实的衡量标准,模拟了生产环境的约束(不可见测试、多语言支持)。
- CI/CD 集成:黑盒测试框架可以直接嵌入现有流水线,自动验证 AI 生成的补丁,确保在投入生产前通过。
- 企业迁移:希望现代化传统单体系统的公司应降低预期——当前模型仅在小型、独立的组件上表现良好。
- 模型训练:该基准强调需要包含架构模式(模块边界、API 合约)的训练数据,而不仅仅是代码片段级别的补全。
限制与未来工作
- 现代化范围:该基准侧重于功能等价性;非功能性方面(性能、内存使用、安全性)未进行测量。
- 静态测试覆盖率:尽管测试套件是隐藏的,但仍由人工编写,可能遗漏真实部署中出现的边缘情况。
- 代理多样性:仅评估了四种配置;更广泛的覆盖(例如,微调的领域特定模型)可能会产生不同的扩展行为。
- 未来方向:将基准扩展至包括性能回归、添加更大规模的代码库(>500 K 行代码),并探索半自动化测试生成,以拓宽评估标准。
作者
- Xuefeng Li
- Nir Ben-Israel
- Yotam Raz
- Belal Ahmed
- Doron Serebro
- Antoine Raux
论文信息
- arXiv ID: 2602.22518v1
- 分类: cs.SE
- 出版日期: 2026年2月26日
- PDF: Download PDF