引领软件工程新反派 冲破大模型与代码库的壁垒 阿里巴巴提出CODEXGRAPH

在现代软件工程中,大型言语模型(LLMs)在处置独立的代码义务方面体现杰出,例如HumanEval和MBPP,但在处置整个代码库时却遇到了艰巨。这一应战促使钻研人员探求在代码库规模上增强LLM与代码库的交互。目前的处置打算依赖于基于相似性的检索或手开工具和API,每种方法都有显著的缺陷。基于相似性的检索在复杂义务中往往回想率低,而手开工具和API理论是特定义务的,须要专家常识,降落了它们在多样化代码义务和事实环球运行中的通用性。

为了克制这些限度,咱们引入了CODEXGRAPH,一个系统,将LLM代理与从代码库中提取的图数据库接口集成在一同。经过应用图数据库的结构属性和图查问言语的灵敏性,CODEXGRAPH使LLM代理能够构建和口头查问,准许启动准确的、代码结构感知的高低文检索和代码导航。咱们经过三个基准来评价CODEXGRAPH的性能:CrossCodeEval、SWE-bench和EvoCodeBench。此外,咱们开发了五个事实环球的编码运行。经过一致的图数据库形式,CODEXGRAPH在学术和事实环球环境中展现了竞争性能和后劲,展现了其在软件工程中的多配置性和有效性。

论文题目 :CODEXGRAPH: Bridging Large Language Models and Code Repositories via Code Graph> 机构

论文链接

名目地址 :​ ​​ ​

CODEXGRAPH系统引见

CODEXGRAPH是一个翻新的系统,旨在经过图数据库接口将代码库与大型言语模型(LLM)桥接起来。该系统应用从代码库中提取的代码图,经过静态剖析技术,将代码符号和相关索引并存储为图数据库中的节点和边。这些节点和边依据预约义的形式启动组织,节点代表如模块、类和函数等代码符号,边则示意这些符号之间的相关,如蕴含、承袭和经常使用等。

CODEXGRAPH的外围配置是使LLM代理能够构建和口头图查问,从而成功准确的代码结构感知高低文检索和代码导航。这种结构的应用大大增强了LLM在处置复杂代码库义务时的性能,使其能够有效地裁减到更大的代码库义务中。

具体解析:构建代码图数据库

1. 从代码库中提取代码图

构建代码图数据库的第一步是从目的代码库中提取代码图。这一环节理论触及静态剖析技术,扫描代码库中的每个文件,识别出代码中的符号及其相互相关,并将这些消息作为节点和边添加到图数据库中。例如,一个函数或类会被创立为一个节点,而函数调用或类承袭则被视为边。

2. 定义节点和边的类型及其属性

在CODEXGRAPH系统中,节点和边的类型及其属性是依据代码的结构和语义预先定义的。节点类型包括模块、类、方法、函数、字段和全局变量等,每种类型的节点都有相应的属性,如称号、文件门路、代码和签名等。边的类型则示意代码元素之间的不同相关,如蕴含、承袭和经常使用等。这些定义确保了图数据库能够准确地反映代码库的结构。

3. 索引和存储环节的优化

为了提高查问效率和照应速度,CODEXGRAPH在构建代码图数据库时启动了索引和存储优化。首先,经过浅层索引极速捕捉代码库中的符号和相关,而后经常使用深度优先搜查(DFS)等方法处置跨文件的复杂相关,确保图中的边完整无误。此外,节点中不间接存储代码片段,而是存储指向代码片段的索引,这样既节俭了存储空间,也放慢了数据的检索速度。

经过这些精心设计的步骤,CODEXGRAPH能够高效地治理和查问大规模代码库,支持复杂的代码剖析义务,为开发人员和钻研人员提供了一个弱小的工具。

LLM代理与代码图数据库的交互

在CODEXGRAPH系统中,LLM代理与代码图数据库的交互是经过构建和口头图查问来成功的。这一环节充沛应用了图数据库的结构个性和图查问言语的灵敏性,使得LLM代理能够在代码库中启动准确的、结构感知的高低文检索和代码导航。

1. 代码结构感知搜查

CODEXGRAPH应用图查问言语的灵敏性,构建复杂且综合的搜查条件。经过这种方式,LLM代理能够有效地在代码图中导航各种节点和边,口头如“查找某个模块下蕴含特定方法的类”或“检索定义了某个类及其蕴含函数的模块”的查问。这种代码结构感知的搜查方式,提供了一种难以经过基于相似性的检索方法或传统的代码特定工具和API成功的代码检索级别。

2. 写后翻译

在CODEXGRAPH中,LLM代理首先基于用户提供的疑问了解高低文并生成人造言语查问,这些查问随后被专门的翻译LLM代理转换为方式化的图查问。这种分工使得主LLM代理可以专一于上档次的推理,同时确保图查问的语法正确性和优化。经过这种“写后翻译”的战略,CODEXGRAPH提高了查问的成功率,并改善了系统检索相关代码消息的才干。

3. 迭代管道

CODEXGRAPH驳回迭代管道启动LLM代理与代码图数据库的交互,每一轮中,LLM代理依据用户的疑问和之前搜集的消息制订多个查问。这种迭代方法充沛应用了LLM代理的推理才干,从而提高了处置疑问的准确性。

试验设置与评价

为了评价CODEXGRAPH的有效性,咱们在三个具备代表性的代码库级基准上启动了测试:CrossCodeEval、SWE-bench和EvoCodeBench。经过这些基准,咱们可以片面评价CODEXGRAPH在不同的编程义务中的体现。

1. 基准

2. 重要结果

咱们在CrossCodeEval Lite(Python)和SWE-bench Lite测试集上报告了CODEXGRAPH的重要结果,并在EvoCodeBench的完整测试集上启动了评价。这些测试集的选用旨在展现CODEXGRAPH在处置具备不同复杂度的义务时的性能。

3. 基线比拟

咱们将CODEXGRAPH与几种基线方法启动了比拟,包括BM25和AUTOCODEROVER,这些基线在代码义务中获取了宽泛认可。此外,咱们还评价了CODEXGRAPH在不同的大型言语模型(如GPT-4o、DeepSeek-Coder-V2和Qwen2-72b-Instruct)上的体现,以测试其在处置长文本、经常使用工具和生成代码方面的才干。

经过这些试验设置和评价,咱们能够片面了解CODEXGRAPH在学术基准和实践软件工程义务中的体现,展现了其在多种编程义务中的通用性和有效性。

CODEXGRAPH的实践运行场景

1. 代码调试和写代码注释

CODEXGRAPH在实践运行中体现出极大的灵敏性和有效性,特意是在代码调试和写代码注释这两个方面。例如,在代码调试运行中,CODEXGRAPH能够经过迭代推理和消息检索来诊断和处置失误,提供针对性的修复倡导。这一环节触及经常使用图查问言语来剖析代码库,识别疑问要素,并介绍准确的修正措施。

在写代码注释的运行中,CODEXGRAPH应用代码图数据库了解代码的结构和行为,从而生成详尽且准确的代码注释,增强代码的可读性和可保养性。这一配置关于了解复杂的代码库、识别依赖相关以及探求特定类、方法和函数的经常使用尤为有用。

2. 代码生成和单元测试生成

CODEXGRAPH还裁减到了代码生成和单元测试生成畛域。在代码生成运行中,它能够智能创立代码以满足新的需求,裁减现有代码库的配置。而在单元测试生成运行中,CODEXGRAPH能够为指定的类或函数生成单元测试,确保配置的彻底验证。这些配置经过迭代查问和多跳推理,使CODEXGRAPH能够在处置大型代码库时体现出高效和准确。

探讨与总结

CODEXGRAPH经过将大型言语模型(LLMs)与代码图数据库接口结合,克制了现有方法在灵敏性和泛化才干上的限度,特意是在处置复杂的代码库和多样化的代码义务时。经过成功结构化的代码消息存储和高效的查问机制,CODEXGRAPH不只提高了代码义务的性能,还展现了其在学术和实践软件工程义务中的宽泛实用性。

此外,CODEXGRAPH的设计准许启动准确且结构化的代码检索,这是传统基于相似性的检索方法和手开工具/API难以成功的。经过这种方式,CODEXGRAPH极大地优化了代码了解和操作的效率,为复杂的代码库义务提供了一种弱小且灵敏的处置打算。

总之,CODEXGRAPH经过其翻新的设计和成功,有效地处置了大型代码库中的多样化代码义务,展现了其在智能化软件开发中提高准确性和可用性的后劲。未来,随着对更多编程言语的支持和数据库构建效率的进一步优化,CODEXGRAPH有望在软件工程畛域中施展更大的影响。

本文转载自​​,作者:

您可能还会对下面的文章感兴趣: