Benchmark · coding

RepoCoder

niche 0 条结果 0 个模型

RepoCoder 评估仓库级代码补全:给定源文件中的某个位置,模型必须利用来自整个仓库的上下文预测缺失的代码。其 RepoEval 基准对行级和 API 调用补全报告 Exact Match 与 Edit Similarity,对完整函数体报告单元测试通过率。

了解更多
示例
补全仓库文件中一行只写了一半的代码,而这行调用了同一项目中另一个文件里定义的函数或类——模型必须利用跨文件的仓库上下文才能给出正确补全。
评分方式
行级和 API 调用补全用 Exact Match(预测与被隐藏的标准代码完全一致记 1,否则记 0)和 Edit Similarity(1 − 归一化的 Levenshtein 距离)评分,在所有样本上取平均并以百分比表示。函数体补全通过执行评分:生成的函数体替换原实现,并必须通过仓库中已有的单元测试。
验证方式
对于行/API 条目,逐样本地将预测与源仓库中被隐藏的参考代码比较来判定:完全一致(EM)或按编辑距离相似度(ES)。函数补全只有在仓库自带的单元测试对生成的函数体全部通过时才被接受。所选仓库较新且质量较高,以减少训练数据泄漏。
为何重要
真实编程发生在庞大的现有代码库中,而非孤立的片段里。RepoCoder/RepoEval 检验模型能否使用散布在众多文件中的项目专有 API、符号与约定——这比孤立地合成函数更能真实衡量编码助手的能力。
示例解析
任务
行级补全(RepoEval)。在仓库中,utils/config.py 定义了辅助函数 load_config(path),而 trainer.py 以 from .utils.config import load_config 开头。给定下面的代码以及检索到的跨文件仓库上下文,预测 __init__ 内被隐藏的那一行: ```python class Trainer: def __init__(self, path): ```
解答
self.config = load_config(path)
解析
正确,因为 load_config 是仓库自有的辅助函数,在 trainer.py 顶部导入;只有跨文件的仓库上下文才能揭示它,因此泛泛的猜测(例如内联读取 JSON)会出错。该行以 Exact Match 对照被隐藏的标准答案评分,Edit Similarity 给予部分分。

该 benchmark 暂无已验证的得分。