- 简介仓库级代码补全的性能取决于通用知识和仓库特定知识的有效利用。尽管通用代码LLM在一般的代码补全任务中具有令人印象深刻的能力,但由于这些LLM缺乏仓库特定知识,它们在仓库级补全方面的表现通常不如人意。为解决这个问题,我们提出了GraphCoder,一种检索增强的代码补全框架,通过基于图的检索生成过程,利用LLM的通用代码知识和仓库特定知识。具体而言,GraphCoder通过代码上下文图(CCG)更准确地捕捉补全目标的上下文,CCG由代码语句之间的控制流、数据和控制依赖性组成,这是一种比现有检索增强方法中使用的基于序列的上下文更结构化的方式来捕捉补全目标上下文;基于CCG,GraphCoder进一步采用粗到细的检索过程,从当前仓库中定位与补全目标具有上下文相似性的代码片段。实验结果表明,GraphCoder的有效性和效率都得到了证明:与基线检索增强方法相比,GraphCoder平均达到了更高的精确匹配(EM),代码匹配和标识符匹配分别增加了+6.06和+6.23,同时使用的时间和空间更少。
- 图表
- 解决问题本文旨在解决代码自动补全中缺乏特定知识的问题,提出了一种利用图检索和生成过程来利用通用和特定知识的检索增强代码自动补全框架。
- 关键思路本文提出了GraphCoder框架,通过控制流、数据依赖和控制依赖等构成的代码上下文图(CCG)来更准确地捕捉补全目标的上下文,并基于CCG使用粗到细的检索过程从当前代码库中定位与补全目标上下文相似的代码片段。
- 其它亮点本文的实验结果表明GraphCoder相比基线检索增强方法,平均精确匹配(EM)更高,代码匹配和标识符匹配分别增加了+6.06和+6.23,同时使用更少的时间和空间。值得关注的是,本文使用的是更结构化的CCG来捕捉上下文,相比现有的基于序列的上下文,更准确地捕捉了补全目标的上下文。
- 最近的相关研究包括:1. CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing;2. Neural Program Search: Solving Programming Tasks from Description and Examples;3. A Survey on Code Completion Techniques。
沙发等你来抢
去评论
评论
沙发等你来抢