[发明专利]一种基于深度学习的面向对象程序方法命名异味检测方法在审
申请号: | 202210059016.4 | 申请日: | 2022-01-18 |
公开(公告)号: | CN114398076A | 公开(公告)日: | 2022-04-26 |
发明(设计)人: | 吴小囡;苏航;高红雨 | 申请(专利权)人: | 北京工业大学 |
主分类号: | G06F8/72 | 分类号: | G06F8/72;G06F8/41;G06N3/04;G06N3/08 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 沈波 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 深度 学习 面向 对象 程序 方法 命名 异味 检测 | ||
1.一种基于深度学习的面向对象程序方法命名异味检测方法,其特征在于:输入为代码数据集,输出为异味检测结果;
包括以下步骤:
(1)初始化需要的参数,构造所需的相关数据结构;
(2)信息提取;输入代码数据集,获取每个方法的上下文信息,包括类名、类注释、类中成员变量名和方法注释;抽取每个方法的抽象语法树,然后进行拆分和遍历,并且还需对抽象语法树节点预训练数据集进行预处理;
(3)预训练;分别对方法上下文与方法体中的单词和抽象语法树中节点类型进行预训练;
(4)预处理;分别对方法上下文信息和方法体信息进行预处理;
(5)方法名预测模型构建;构建Encoder-Decoder模型,根据输入的数据,输出最终的检测结果。
2.如权利要求1所述的一种基于深度学习的面向对象程序方法命名异味检测方法,其特征在于:所述步骤(1):初始化方法需要的参数,构造方法所需的相关数据结构:
(2-1)初始化方法需要的参数,Ml表示方法法上下文长度的最大值;Ms表示一个方法的抽象语法树所包含子树的最大值;Mn表示子树中所包含的节点数量的最大值;Mc表示子树中一个节点所包含的孩子节点数量的最大值;Bs表示一次读入数据大小,即批处理大小;Nf表示特征向量的维度;Es表示训练性能不再提升时,继续几轮后停止训练;
(2-2)构造方法所需的相关数据结构
构建方法数据集合D,D={di|1≤i≤n},n表示数据样本总数,di表示为第i个方法的三元组(Ti,Mi,Ai),Ti表示di预处理后的方法上下文词集合,表示为Ti={tij|1≤j≤tn},其中tij表示第i个方法上下文Ti中第j个词,tn表示上下文Ti中所包含的词个数;Mi表示di预处理后的方法体信息集合,表示为Mi={mj|1≤j≤tm},其中tm表示第i个方法对应的抽象语法树子树数量,最大值为Ml,mj表示四元组各分项分别对应第i个方法的第j个抽象语法树的前序遍历节点集合、前序遍历孩子节点集合、层次遍历节点集合和层次遍历孩子节点集合;可表示为其中表示中的第k个节点名称,np表示中节点数量,其最大值为Mn;可表示为其中表示第i个方法中前序遍历集合的第j个子树中第k个节点对应的孩子节点集合,表示为其中nc表示所包含的孩子节点数量,cm表示中第m个孩子节点,且cm最大值为Mc;和的表示与和类似;Ai表示di预处理后方法名词集合,可以表示为Ai={aj|1≤j≤ta},其中aj表示第i个方法中方法名的第j个词,ta表示方法名所包含的词个数;
构建抽象语法树节点类型预训练集合P,P={pi|1≤i≤np},np表示预训练样本总数,pi表示为第i个方法对应的抽象语法树节点集合,表示为pi={pnj|1≤j≤nn},nn表示为抽象语法树节点的个数,pnj表示第i个方法抽象语法树中的第j个节点,表示为三元组(prj,ppj,PCj),prj表示第i个方法抽象语法树中的第j个节点的名称,ppj表示第i个方法抽象语法树中的第j个节点的父节点名称,PCj表示第i个方法抽象语法树中的第j个节点的孩子节点集合。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210059016.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种提高钢板凸型瓢曲的矫直方法
- 下一篇:一种内窥镜节育避孕装置