买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种基于逐层融合抽象语法树的代码补全方法_广东工业大学_202310959780.1 

申请/专利权人:广东工业大学

申请日:2023-08-02

公开(公告)日:2024-04-12

公开(公告)号:CN117573084B

主分类号:G06F8/30

分类号:G06F8/30;G06F8/41;G06N3/0464;G06N3/08

优先权:

专利状态码:有效-授权

法律状态:2024.04.12#授权;2024.03.08#实质审查的生效;2024.02.20#公开

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

主权项:1.一种基于逐层融合抽象语法树的代码补全方法,其特征在于提取代码抽象语法树的层次结构信息,同时结合语义信息进行代码补全,该方法包括以下步骤:第一步,对数据集中的每一份待补全源程序进行预处理:对待补全源程序进行解析,生成与待补全源程序对应的抽象语法树(AbstractSyntaxTree,AST)、控制流程图(ControlFlowGraph,CFG)、数据流程图(DataFlowGraph,DFG)和函数调用图(CallGraph,CG);将经过预处理后的数据集划分为训练集、验证集和测试集;第二步,搭建一个基于逐层融合抽象语法树的代码补全模型,具体包括:(1)构建语句级抽象语法树(Sentence-AbstractSyntaxTree,S-AST):使用基于树的卷积神经网络(Tree-BasedConvolutionalNeuralNetwork,TBCNN),分别对待补全源程序的每一条语句对应AST的子树进行融合,得到对应于每一棵子树的唯一的特征向量,根据得到的子树特征向量构建S-AST;(2)构建增强语句级抽象语法树(AugmentedSentence-AbstractSyntaxTree,AS-AST):在S-AST中添加控制流边、数据流边和路径相似边,构建得到AS-AST;其中控制流边包含了待补全源程序的控制流信息,数据流边包含了待补全源程序的数据流信息,路径相似边包含了待补全源程序的语义相似信息;(3)构建信息增强函数调用图(InformationAugmentedCallGraph,IA-CG):将AS-AST按函数进行拆分,拆分得到的每一棵子树与每一个函数一一对应,使用异构图变换模型(HeterogeneousGraphTransformer,HGT)分别对每一棵子树进行融合,得到与每一棵子树对应的、唯一的特征向量,使用上述特征向量分别替换CG中对应的结点,即可构建出IA-CG;(4)提取IA-CG特征:使用图注意力网络(Graphattentionnetworks,GAT)提取IA-CG包含的层次结构信息和语义信息,得到与IA-CG中的每一个结点对应的、唯一的特征向量;在待补全源程序中,将需要插入补全代码的函数记为fun_p,使用注意力机制提升与fun_p相关的所有函数的重要程度;将所有结点的特征向量进行加权求和,得到表示IA-CG的特征向量;(5)根据IA-CG特征提取后得到的特征向量,生成补全代码;第三步,设置基于逐层融合抽象语法树的代码补全模型的所有初始参数,设置词向量的维度、批处理的大小、学习率的大小、优化器的选择等与该模型相关的超参数;将训练集和验证集加载至该模型中进行训练,训练结束后得到对于该模型最优的参数;第四步,运用该代码补全模型,对待补全源程序进行代码补全,将测试集输入到训练好的代码补全模型中进行测试,使用机器学习中的准确率和MRR作为该代码补全模型在执行代码补全任务时的评估指标,然后将该代码补全模型运用于不同数据集的代码补全任务当中。

全文数据:

权利要求:

百度查询: 广东工业大学 一种基于逐层融合抽象语法树的代码补全方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。