[发明专利]一种基于BP神经网络的代码坏味检测方法有效

专利信息
申请号: 201910812005.7 申请日: 2019-08-30
公开(公告)号: CN110502277B 公开(公告)日: 2023-04-07
发明(设计)人: 王曙燕;张一权;孙家泽 申请(专利权)人: 西安邮电大学
主分类号: G06F8/77 分类号: G06F8/77;G06F18/241;G06F18/2413;G06N3/0464;G06N3/047;G06N3/084
代理公司: 暂无信息 代理人: 暂无信息
地址: 710121 陕*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 本文发明涉及一种基于BP神经网络的代码坏味检测方法,属于计算机软件技术领域。首先提取代码坏味实例以及标签信息,然后计算有无代码坏味度量特征,将度量特征和提取到的标签信息进行合并,以此构成训练集,采用Keras建立神经网络,将训练集作为神经网络模型的输入,完成对代码坏味预测输出训练,最后从被测程序中得到的代码坏味实例作为代码坏味测试集,输入到训练好的神经网络模型中,使模型输出代码坏味属于某类。本发明结合基于度量特征的代码坏味检测技术与神经网络算法,对数据集中含有不同类型的代码坏味进行检测,提高了检测准确度与F1值。
搜索关键词: 一种 基于 bp 神经网络 代码 检测 方法
【主权项】:
1.一种基于BP神经网络的代码坏味检测方法,其特征在于以下步骤:/n(1)提取代码坏味实例以及标签信息;/n具体实现过程为:首先,针对长方法和特征依恋两种代码坏味类型,使用代码坏味自动检测工具对开源软件系统进行检测,提取这两种代码坏味实例和无坏味实例,然后对其设置标签:0代表无坏味,1代表长方法,2代表特征依恋;/n所述的代码坏味自动检测工具为:iPlasma、inFusion、Checkstyle其中一种;/n(2)计算有代码坏味实例和无代码坏味实例度量特征;/n所述的度量特征指的是软件规模度量,内聚度度量和耦合度度量;/n具体实现过程为:使用浮点数序列对有代码坏味和无代码坏味实例度量特征进行编码表示,其中0代表某度量特征不是影响代码坏味因素,纯小数值代表某度量特征是影响代码坏味因素;/n(3)将步骤(1)和步骤(2)中的度量特征和标签进行合并,以此构成训练集;/n具体实现过程为:首先根据得到的度量特征以及标签信息进行合并,并对度量特征以及标签信息转换为向量表示<m11,m12,m13,......,p1n>,m表示特征度量,p表示为标签;通过合并之后的代码坏味训练集结构为:每一行代表代码坏味实例,每一列代表度量特征,最后一列为标签信息,其中k表示代码坏味实例数量,并以此形成一种矩阵数据M,可以表示为:/n /n(4)将构建好的训练集输入神经网络,进行神经网络模型训练;/n具体方式为:构建的神经网络采用全连接形式,第一层为一个输入层,第二层是隐藏层,网络的最后一层是输出层,输出层采用Softmax并输出代码坏味属于某类;并将步骤(2)中的代码坏味度量特征作为输入层的输入,将步骤(1)中的标签信息作为网络输出基准,可以表示为Yreal,输出层的输出值可以表示为Ypred,如果Yreal与Ypred之间的误差小于当前设定的阈值或者训练迭代轮数达到阈值,则完成神经网络对代码坏味预测输出训练,否则返回BP神经网络输入层阶段进行模型训练;/n(5)将被测程序中得到的代码坏味实例作为代码坏味测试集,并且按照步骤(3)中所述方式对测试数据进行合并与向量形式转换,将得到的测试集输入步骤(5)中训练好的神经网络模型中,模型自动输出0或1或2,其中0代表不存在坏味,1代表长方法,2代表特征依恋。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201910812005.7/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top