[发明专利]基于开源社区知识的软件缺陷预测装置及方法有效
申请号: | 202010811530.X | 申请日: | 2020-08-13 |
公开(公告)号: | CN111949535B | 公开(公告)日: | 2022-12-02 |
发明(设计)人: | 王璐;李青山;罗文龙;曹壮;吕文琪;李昊;张河 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/04;G06N3/08;G06K9/62 |
代理公司: | 陕西电子工业专利中心 61205 | 代理人: | 田文英;王品华 |
地址: | 710071*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 社区 知识 软件 缺陷 预测 装置 方法 | ||
1.一种基于开源社区知识的软件缺陷预测装置,包括开源软件信息采集模块、预处理模块、代码块提取模块、特征度量模块、缺陷预测模块、缺陷类型判别模块、结果输出模块,其中:
所述的开源软件信息采集模块,用于采集至少500条开源社区的开源软件信息,每条开源软件信息包括软件源代码、修复描述和项目基础信息;
所述的预处理模块,用于根据采集到的每个软件源代码对应的同一条开源软件信息中的修复描述和项目基础信息确定该软件源代码是否存在缺陷;并分别将存在缺陷的源代码标注为有缺陷,不存在缺陷的源代码标注为无缺陷;将标注映射为数值,若标注为有缺陷,则映射为1,若标注为无缺陷,则映射为-1;
所述的代码块提取模块,用于利用缺陷代码块提取方法,从每个标注为有缺陷的源代码中提取一个缺陷代码块;利用有效代码块提取方法,从每个标注为无缺陷的源代码中提取一个有效代码块;
所述的特征度量模块,用于利用CK度量元,分别对每个缺陷代码块、每个有效代码块的特征进行度量,将每个度量后的代码块及度量后的特征组成一个训练样本,将所有训练样本组成缺陷预测数据集;
所述的缺陷预测模块,用于搭建一个包含输入层、隐藏层以及输出层的BP神经网络;将BP神经网络输入层的神经元设置为6个,隐藏层的个数设置为3,隐藏层神经元设置为10个,每个神经元的激活函数设置为sigmoid(x);将缺陷预测数据集中的每个训练样本依次输入到BP神经网络中,采用误差进行反向传播的多层前馈型训练算法,对BP神经网络进行迭代训练,直至损失函数Cost(target,out)收敛为止,得到训练好的BP神经网络;判断每个训练样本的输出值,如果输出值大于0,则预测训练样本中的代码块存在缺陷,若小于0,则预测训练样本中的代码块不存在缺陷,将所有被预测有缺陷的代码块组成缺陷判别数据集;
所述的缺陷类型判别模块,用于搭建一个包含输入层、隐藏层、Pooling层以及Softmax层的LSTM神经网络;设置LSTM神经网络输入层的神经元设置为6个,隐藏层的神经元设置为5个,设置隐藏层后连接Mean Pooling层和Softmax层,将隐藏层激活函数设置为tanh(x);对缺陷判别数据集中每个代码块中的每行代码进行向量化,得到对应的代码行向量,将所有代码行向量输入到LSTM神经网络中,采用误差进行反向传播的多层前馈型的训练算法,对LSTM神经网络进行迭代训练,直至损失函数收敛为止,得到训练好的LSTM神经网络;将所有代码行向量经LSTM神经网络输出的类别分布概率向量,按照概率值从大到小进行排序,将排序后向量中前三个概率值分别对应的缺陷类别组成缺陷类别预测列表;
所述的结果输出模块,用于输出待预测代码块是否具有缺陷,若具有缺陷,则进一步输出缺陷类别。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010811530.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种口腔正畸矫治器摩擦测试实验台
- 下一篇:一种环氧树脂板成型加工方法