[发明专利]一种基于深度学习的特征依恋代码异味检测方法有效
申请号: | 201810454294.3 | 申请日: | 2018-05-14 |
公开(公告)号: | CN108664269B | 公开(公告)日: | 2019-02-26 |
发明(设计)人: | 刘辉;许志凤 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F8/72 | 分类号: | G06F8/72;G06K9/62;G06N3/08 |
代理公司: | 北京理工正阳知识产权代理事务所(普通合伙) 11639 | 代理人: | 唐华 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 测试数据 方法信息 可移动 开源软件 训练数据 异味检测 词向量 计算机软件技术 卷积神经网络 生成测试数据 输入神经网络 训练神经网络 距离转换 训练集 检测 准确率 异味 测试 输出 学习 转换 | ||
1.一种基于深度学习的特征依恋代码异味检测方法,其特征在于,包括以下步骤:
步骤1:提取用于训练的开源软件的可移动方法信息和距离,生成训练集;
所述可移动方法是指该方法有可移动的类,并且移动之后未出现编译错误;
所述方法信息包括方法名、方法源类名和方法目标类名;
所述距离包括方法与源类的距离和方法与目标类的距离;
具体实现过程为:
首先,检测“方法”是否可以移动到其他类;若可以移动,提取该可移动方法的方法信息和距离,自动生成标签为0,代表不存在特征依恋代码异味,然后移动该方法,并提取移动后方法的方法信息和距离,自动生成标签为1,代表存在特征依恋代码异味,之后执行撤回操作,将移动后方法回归原位,并转向判断下一个方法;若判断结果为该方法不能移动,则丢弃并转向判断下一个方法;当所有方法判断完毕之后,生成所有可移动方法的方法信息和距离的训练集,其中正样本占50%,负样本占50%;
步骤2:将步骤1提取出来的可移动方法信息和距离转换为词向量表示的训练数据;
神经网络的输入分为两部分:一部分是将训练集中的每个方法名及其对应的源类名和目标类名转换为一个15维的向量表示,另一部分是将距离用一个二维的向量表示;
每一个方法名、方法源类名和方法目标类名均为一个标识符;首先将标识符转换为向量表示,将每个标识符的名称分割为一系列的单词<t1,t2,……,tk>,假定标识符遵循驼峰或蛇形命名规则,分割标识符的依据是下划线和大写字母;然后将每个向量转化为词向量;
步骤3:将训练数据输入卷积神经网络,训练神经网络模型;
具体方式为:构建一个卷积神经网络,第一层为网络输入层,将文本序列展开成词向量的序列,之后连接卷积层、激活层,然后连接全连接层和激活层,激活层采用sigmoid并输出该文本属于某类的概率;
将步骤2中得到的词向量作为网络输入层的输入,将标签作为网络输出基准,进行网络输出词向量的训练,从而得到神经网络模型;
步骤4:提取用于测试的开源软件的可移动方法的方法信息和距离,生成测试数据集;
所述方法信息包括方法名、方法源类名和方法目标类名;所述距离包括方法与源类的距离和方法与目标类的距离;
检测“方法”是否可以移动到其他类;若可以移动,则随机划分为50%移动和50%不移动概率;如果属于50%移动概率,则移动该方法,并提取移动后方法的方法信息和距离,自动生成标签为1,代表存在特征依恋代码异味,之后执行撤回操作,将移动后方法回归原位,并转向判断下一个方法;如果属于50%不移动概率,则提取该可移动方法的方法信息和距离,自动生成标签为0,代表不存在特征依恋代码异味;
利用步骤2所述的转换方式,将测试数据集中的数据全部转换为由词向量表示的待测试数据;
步骤5:将步骤4得到的待测试数据输入步骤3得到的神经网络模型中,模型自动输出0或1,其中1代表存在特征依恋代码异味,0代表不存在。
2.如权利要求1所述的一种基于深度学习的特征依恋代码异味检测方法,其特征在于,所述步骤1中,使用Eclipse JDT提供的API方法检测“方法”是否可以移动到其他类。
3.如权利要求1所述的一种基于深度学习的特征依恋代码异味检测方法,其特征在于,所述步骤2中,将可移动方法信息的每个向量转化为词向量通过自行训练一个Word2vector模型实现:利用一个输入层输入Word2vector的训练数据,利用一个隐藏层训练生成Word2vector模型;通过一个输出层,利用Word2vector模型将可移动方法信息的每个向量转化为词向量。
4.如权利要求1所述的一种基于深度学习的特征依恋代码异味检测方法,其特征在于,所述步骤3中,为降低神经网络预测的错误率,利用自适应学习率调整算法进行神经网络模型训练。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810454294.3/1.html,转载请声明来源钻瓜专利网。