作者: Fengji Zhang, Bei Chen, Yue Zhang, Jin Liu, Daoguang Zan, Yi Mao, Jian-Guang Lou, Weizhu Chen
arXiv: 2303.12570v1 [cs.CL](提交于 2023 年 3 月 22 日;最新版本 v3,2023 年 10 月 20 日)
仓库级代码补全任务是指基于仓库更广泛的上下文,继续编写未完成的代码。然而,对于自动化代码补全工具而言,难以利用分散在不同文件中的有用信息。为此,作者提出 RepoCoder——一个简单、通用且有效的框架来应对这一挑战。
该框架通过结合基于相似度的检索器(similarity-based retriever)和预训练代码语言模型(pre-trained code language model),简化了仓库级代码补全流程,从而有效利用仓库级信息进行代码补全,并支持生成不同粒度级别的代码。此外,RepoCoder 采用了一种新颖的迭代检索-生成范式(iterative retrieval-generation paradigm),以弥合检索上下文与目标补全内容之间的差距。
作者还提出了新的基准测试 RepoEval,由最新且高质量的真实世界仓库构成,涵盖行级、API 调用级和函数体级补全场景。实验采用多种代码检索器与生成器的组合来测试 RepoCoder 的性能,结果表明:RepoCoder 在所有设置下均将零样本代码补全基线显著提升 10% 以上,并持续优于原始的检索增强代码补全方法。进一步的综合分析验证了 RepoCoder 的有效性,并为未来研究提供了有价值的见解。
引用格式: arXiv:2303.12570 [cs.CL]