← 返回列表

一种基于层次结构特征和序列特征的代码补全方法

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

专利详细信息

项目 内容
专利名称 一种基于层次结构特征和序列特征的代码补全方法
专利类型 发明申请
申请号 CN202311340389.X
申请日 2023/10/17
公告号 CN117573085A
公开日 2024/2/20
IPC主分类号 G06F8/30
权利人 广东工业大学
发明人 苏庆; 黄炜谦; 黄佳庆; 洪新杰; 谢国波
地址 广东省广州市越秀区东风东路729号大院

摘要文本

本发明公布了一种基于层次结构特征和序列特征的代码补全方法,具体实现步骤如下:(1)数据预处理:解析待补全源代码为对应的抽象语法树,解析抽象语法树生成对应的函数调用图,再构建抽象语法树对应的结点序列。(2)构建基于层次结构特征和序列特征的代码补全模型:构建抽象语法序列图并提取其特征;使用抽象语法树逐步构建语句级抽象语法树、块级抽象语法树和结构增强函数调用图,并提取结构增强函数调用图的特征;根据提取得到的特征生成补全代码。(4)划分数据预处理后的数据集,设置模型的所有初始参数和超参数;加载数据集至模型中进行训练,训练结束后得到该模型的最优参数。(5)将该代码补全模型应用于代码补全任务。

专利主权项内容

1.一种基于层次结构特征和序列特征的代码补全方法,其特征在于,提取了代码的层次结构特征和函数调用特征,同时结合了代码的序列特征和重复性特征进行代码补全,该方法包括以下步骤:第一步,数据预处理:对于数据集中的每一份待补全源代码,将待补全源代码解析为待补全源代码对应的抽象语法树(Abstract Syntax Tree,AST),然后解析AST,生成与AST对应的函数调用图(Call Graph,CG),再通过先序遍历AST,将AST中的所有结点转化为结点序列,结点序列中的每一个结点都与AST中的结点一一对应;第二步,构建基于层次结构特征和序列特征的代码补全模型:首先根据数据预处理中得到的结点序列,构建抽象语法序列图(Abstract Syntax Sequence Graph,ASSG),使用门控图神经网络(Gated Graph Sequence Neural Networks,GGNN)提取ASSG包含的序列特征和重复性特征;然后使用AST逐步构建语句级抽象语法树(Abstract Syntax Tree-Sentence Level,AST-SL)、块级抽象语法树(Abstract Syntax Tree-Block Level,AST-BL)和结构增强函数调用图(Structure Augmented Call Graph,SA-CG),使用图注意网络(Graph attention networks,GAT)提取SA-CG包含的层次结构特征和函数调用特征;最后根据提取得到的特征生成补全代码;第三步,将经过数据预处理后的数据集划分为训练集、验证集和测试集,设置基于层次结构特征和序列特征的代码补全模型的所有初始参数,设置批处理的大小、迭代次数、神经网路的隐藏层数等与于该模型相关的超参数;将训练集和验证集加载至模型中进行训练,训练结束后得到对于该模型最优参数;第四步,将测试集输入到构建得到的代码补全模型中进行测试,使用准确率和BLEU作为该代码补全模型在执行代码补全任务时的评估指标,然后将该代码补全模型应用于代码补全任务。