论文
超越存储库边界:用于代码生成的跨存储库图检索
Beyond Repository Boundaries: Cross-Repository Graph Retrieval for Code Generation
摘要
存储库级代码生成要求生成的代码不仅与目标存储库兼容,而且与其依赖环境兼容。现有的基于检索的方法主要从本地存储库检索上下文,使外部 API 的使用依赖于模型的预训练知识,这对于看不见的或特定于版本的 API 来说可能是不够的。此外,当前的检索策略主要关注一跳证据,而忽略了代码组件之间的结构关系。我们提出了 CrossCoder,一个跨存储库代码生成框架,它通过存储库和库实体上的统一知识图显式地将外部库合并到检索上下文中。 CrossCoder 通过规划和语义检索来识别重要节点,然后有选择地扩展相邻节点以检索更丰富的多跳上下文证据以进行生成。为了进一步评估依赖版本兼容性,我们引入了 VersionExec,这是一个源自 BigCodeBench 的基于执行的基准,用于评估不同依赖版本下的生成。 RepoExec、DevEval 和 VersionExec 的实验结果表明,CrossCoder 持续改进了功能正确性(在 pass@1 上高达 6.3%)和对依赖项版本更改的鲁棒性。