中文

GraphCoder:基于代码上下文图的检索增强仓库级代码补全

软件工程 2024-09-16 v2

摘要

仓库级代码补全的性能依赖于有效地利用通用知识和仓库特定知识。尽管代码 LLM 在通用代码补全任务中展现出惊人的能力,但在仓库级补全方面表现不佳,这是由于这些 LLM 缺乏仓库特定知识所致。为解决此问题,我们提出了 GraphCoder,一个检索增强的代码补全框架,通过图基检索-生成过程整合 LLM 的通用代码知识和仓库特定知识。具体而言,GraphCoder 通过由控制流、数据和控制依赖关系构成的代码上下文图(CCG)更准确地捕获补全目标的上下文,相较于现有检索增强方法使用的序列基上下文,捕获补全目标上下文更为结构化。基于 CCG,GraphCoder 进一步采用粗到细检索过程,从当前仓库中定位与补全目标相似的上下文代码片段。实验结果表明,GraphCoder 在有效性和效率方面均表现出色:与基线检索增强方法相比,GraphCoder 在代码匹配和标识符匹配上分别提高了 +6.06 和 +6.23 的 exact match(EM),同时使用更少的时间和空间。

关键词

引用

@article{arxiv.2406.07003,
  title  = {GraphCoder: Enhancing Repository-Level Code Completion via Code Context Graph-based Retrieval and Language Model},
  author = {Wei Liu and Ailun Yu and Daoguang Zan and Bo Shen and Wei Zhang and Haiyan Zhao and Zhi Jin and Qianxiang Wang},
  journal= {arXiv preprint arXiv:2406.07003},
  year   = {2024}
}