代码上下文提取方法及装置、存储介质及电子设备与流程

摘要: 本申请涉及人工智能及软件开发,具体而言,涉及一种代码上下文提取方法及装置、存储介质及电子设备。背景技术:1、在人工智能辅助编程技术中,代码生成模型通常需要将项目...
代码上下文提取方法及装置、存储介质及电子设备与流程

本申请涉及人工智能及软件开发,具体而言,涉及一种代码上下文提取方法及装置、存储介质及电子设备。

背景技术:

1、在人工智能辅助编程技术中,代码生成模型通常需要将项目源码作为上下文输入以进行代码补全或生成。现有技术多采用关键词匹配、调用图遍历或文件路径相似度判断等方法对候选文件进行筛选,或将较大范围的源码文件拼接后送入模型处理。

2、然而,上述方式缺乏对代码间真实数据流与控制流依赖关系的精确识别,导致纳入上下文的代码片段中存在大量与当前编辑任务无实质关联的冗余信息,不仅增加了服务端计算资源消耗与响应延迟,且难以准确反映变量级或表达式级的传播路径,使得上下文选择结果缺乏确定性保障。

技术实现思路

1、针对现有技术存在的代码上下文冗余严重且缺乏确定性保障的问题,本申请提供一种代码上下文提取方法及装置、存储介质及电子设备,实现基于符号传播图的精准上下文提取与裁剪。

2、根据本申请的第一方面,提供了一种代码上下文提取方法,所述方法包括:获取基于代码的语法与语义分析构建的符号传播图,所述符号传播图包括多个符号节点以及表示符号间传播关系的传播关系边;基于当前编辑位置和输入提示,在所述符号传播图中确定起始节点和目标节点;以所述起始节点和所述目标节点为端点,在所述符号传播图中执行双向图遍历,确定连接所述起始节点和所述目标节点的语义可达路径;基于所述语义可达路径涉及的符号节点,提取对应的代码上下文。

3、根据本申请的第二方面,提供了一种代码上下文提取装置,所述装置包括:图获取模块,用于获取基于代码的语法与语义分析构建的符号传播图,所述符号传播图包括多个符号节点以及表示符号间传播关系的传播关系边;节点确定模块,用于基于当前编辑位置和输入提示,在所述符号传播图中确定起始节点和目标节点;遍历模块,用于以所述起始节点和所述目标节点为端点,在所述符号传播图中执行双向图遍历,确定连接所述起始节点和所述目标节点的语义可达路径;上下文提取模块,用于基于所述语义可达路径涉及的符号节点,提取对应的代码上下文。

4、根据本申请的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的代码上下文提取方法。

5、根据本申请的第四方面,提供了一种电子设备,包括处理器;存储器,用于存储一个或多个程序,当一个或多个程序被处理器执行时,使得所述处理器实现上述的代码上下文提取方法。

6、本申请提供的技术方案,通过获取基于语法与语义分析构建的符号传播图,将代码间的深层依赖关系转化为包含符号节点与传播关系边的图结构,克服了传统方法仅依赖文本匹配或浅层调用关系的局限性;在此基础上,结合当前编辑位置与输入提示确定起始节点与目标节点,并执行双向图遍历以确定语义可达路径,该机制利用正向影响探索与逆向依赖追溯的交集,从理论上保证了所提取上下文在数据流与控制流上的双重连通性与必要性;最终基于语义可达路径精准提取代码上下文,有效剔除了与当前任务无实质关联的冗余代码,在不依赖大模型长上下文理解能力的前提下,显著降低了上下文体积与推理计算开销,同时提升了代码生成的准确性与结果的可解释性。

7、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

1.一种代码上下文提取方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述传播关系边包括以下至少一种:

3.根据权利要求1所述的方法,其特征在于,所述符号节点通过全局唯一标识符进行标识,全局唯一标识符的编码规则为将源文件相对路径、作用域链以及符号名称通过预设分隔符进行拼接,其中符号名称经名称重整处理以消除重载歧义;

4.根据权利要求1所述的方法,其特征在于,所述基于当前编辑位置和输入提示,在所述符号传播图中确定起始节点和目标节点,包括:

5.根据权利要求1所述的方法,其特征在于,所述在所述符号传播图中执行双向图遍历,确定连接所述起始节点和所述目标节点的语义可达路径,包括:

6.根据权利要求1所述的方法,其特征在于,所述语义可达路径上的中间符号节点满足语义可达条件,所述语义可达条件为:

7.根据权利要求1所述的方法,其特征在于,所述基于所述语义可达路径涉及的符号节点,提取对应的代码上下文,包括:

8.一种代码上下文提取装置,其特征在于,所述装置包括:

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一项所述的代码上下文提取方法。

10.一种电子设备,其特征在于,包括: