一种基于层次结构特征和序列特征的代码补全方法
申请人信息
- 申请人:广东工业大学
- 申请人地址:510090 广东省广州市越秀区东风东路729号
- 发明人: 广东工业大学
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种基于层次结构特征和序列特征的代码补全方法 |
| 专利类型 | 发明申请 |
| 申请号 | 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作为该代码补全模型在执行代码补全任务时的评估指标,然后将该代码补全模型应用于代码补全任务。