← 返回列表

一种基于逐层融合抽象语法树的代码补全方法

申请号: CN202310959780.1
申请人: 广东工业大学
更新日期: 2026-03-09

专利详细信息

项目 内容
专利名称 一种基于逐层融合抽象语法树的代码补全方法
专利类型 发明申请
申请号 CN202310959780.1
申请日 2023/8/2
公告号 CN117573084A
公开日 2024/2/20
IPC主分类号 G06F8/30
权利人 广东工业大学
发明人 苏庆; 黄炜谦; 谢国波; 刘添添; 黄剑锋
地址 广东省广州市越秀区东风东路729号大院

摘要文本

本发明公布了一种基于逐层融合抽象语法树的代码补全方法,具体实现步骤如下:(1)对数据集中的每一份待补全源程序进行预处理:将待补全源程序解析为对应的抽象语法树、控制流程图、数据流程图和函数调用图,并将经过预处理后的数据集进行划分。(2)搭建一个基于逐层融合抽象语法树的代码补全模型:逐步构建语句级抽象语法树、增强语句级抽象语法树和信息增强函数调用图,使用图注意力网络提取信息增强函数调用图的信息,得到对应的特征向量,根据该特征向量生成补全代码。(3)设置模型的所有初始参数和超参数,将训练集和验证集加载至该模型中进行训练,训练结束后得到对于该模型最优的参数。(4)运用该模型进行代码补全。

专利主权项内容

1.一种基于逐层融合抽象语法树的代码补全方法,其特征在于提取代码抽象语法树的层次结构信息,同时结合语义信息进行代码补全,该方法包括以下步骤:第一步,对数据集中的每一份待补全源程序进行预处理:对待补全源程序进行解析,生成与待补全源程序对应的抽象语法树(Abstract Syntax Tree,AST)、控制流程图(ControlFlow Graph,CFG)、数据流程图(Data Flow Graph,DFG)和函数调用图(Call Graph,CG);将经过预处理后的数据集划分为训练集、验证集和测试集;第二步,搭建一个基于逐层融合抽象语法树的代码补全模型:首先根据AST构建语句级抽象语法树(Sentence-Abstract Syntax Tree,S-AST),接着根据CFG和DFG,对 S-AST进行语义信息增强得到增强语句级抽象语法树(Augmented Sentence-Abstract Syntax Tree,AS-AST),然后根据AS-AST和CG构建信息增强函数调用图(Information Augmented CallGraph,IA-CG),使用图注意力网络(Graph attention networks,GAT)提取IA-CG包含的层次结构信息和语义信息,其中语义信息包括AS-AST中含有的语义相似信息、控制流信息、数据流信息和CG中含有的函数调用信息;最后根据IA-CG特征提取后得到的特征向量,生成补全代码;第三步,设置基于逐层融合抽象语法树的代码补全模型的所有初始参数,设置词向量的维度、批处理的大小、学习率的大小、优化器的选择等与该模型相关的超参数;将训练集和验证集加载至该模型中进行训练,训练结束后得到对于该模型最优的参数;第四步,运用该代码补全模型,对待补全源程序进行代码补全,将测试集输入到训练好的代码补全模型中进行测试,使用机器学习中的准确率和MRR作为该代码补全模型在执行代码补全任务时的评估指标,然后将该代码补全模型运用于不同数据集的代码补全任务当中。