[发明专利]一种基于深度神经网络的软件缺陷定位方法有效
申请号: | 201910368699.X | 申请日: | 2019-05-05 |
公开(公告)号: | CN110109835B | 公开(公告)日: | 2021-03-30 |
发明(设计)人: | 徐玲;王备;帅鉴航;何健军;杨梦宁;张小洪;杨丹;葛永新;洪明坚;王洪星;黄晟;陈飞宇 | 申请(专利权)人: | 重庆大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06K9/62;G06N3/04;G06N3/08 |
代理公司: | 重庆晟轩知识产权代理事务所(普通合伙) 50238 | 代理人: | 杨晓磊 |
地址: | 400044 *** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 深度 神经网络 软件 缺陷 定位 方法 | ||
1.基于深度神经网络的软件缺陷定位方法,其特征在于,包括如下步骤:
S1:收集待测软件的相关数据
访问缺陷跟踪系统获取软件的缺陷报告,使用GIT工具获取软件的代码文件及API文档;
S2:数据预处理
对S1中收集的缺陷报告进行预处理得到如下数据:
缺陷报告集合每个缺陷报告xi代表缺陷报告中的一个单词,缺陷报告集合B的个数记为db;
缺陷报告修复时间向量tl表示缺陷报告修复的时间;
缺陷报告提交时间向量tsl表示缺陷报告dl提交的时间;
对S1中获得的代码文件进行预处理得到如下数据:
代码文件集合每个代码文件yj代表代码文件中的一个单词,代码文件集合S的个数记为ds;
代码文件的名称向量单词snm表示代码文件的名称;
对S1中获取的API文档进行预处理得到如下数据:
API文档集合zk代表API文档的一个单词;
API文档的名称向量dan表示API文档的名称;
每个缺陷报告对应一组标签tagi表示缺陷报告所对应的代码文件的名称;
其中l、m、n,i、j和k均为正整数;
S3:为每个代码文件添加对应的API描述
遍历代码文件集合S,对于每一个遍历向量若j=n时,yj=dan,则构成集合其中
S4:提取如下五个特征
S41:文本相似度
分别构造缺陷报告向量空间和代码文件的向量空间用于记录单词和单词出现的次数,和初始化为空集;
遍历缺陷报告集合B,对于每一个向量都将其添加到向量空间中;
遍历集合S′,对于每一个向量都将其添加到向量空间中;
对于和保留单词出现次数较多的单词,舍去其余记录的单词,得到新的向量空间V′B和V′S;
将和收尾相连形成新的词汇向量将相同的单词仅保留一个,并将单词出现的次数合并;
记di是缺陷报告集合B中包含单词xi的向量的数量,单词xi对应的逆文档频率遍历缺陷报告集合B,对于每一个向量设向量为在向量空间上的映射,大小为nbs,若xi属于向量空间单词xi在向量中出现的次数记为则单词xi在向量中出现的词频单词xi对应的权重大小
记dj是集合S′中包含单词yj的向量的数量,单词yj对应的逆文档频率遍历集合S′,对于每一个向量设向量为在向量空间上的映射,大小为nst,若yj属于向量空间单词yj在向量中出现的次数记为fj,则单词yj在向量中出现的词频单词yj对应的权重大小
遍历缺陷报告集合B和集合S′,对于每个向量组令Nterm为向量的长度,缺陷报告和代码文件的文本相似度
S42:基于协同过滤算法的缺陷报告相似度
遍历代码文件集合S,对每一个代码文件建立逆标签集合Cm,并初始化Cm为空集;
遍历缺陷报告集合B,对于每一个缺陷报告对应的标签将与进行对比,若便把向量添加至集合Cm中;
遍历缺陷报告集合B和代码文件集合S,对于每个向量组遍历集合Cm,若计算与的余弦相似度,得相似度向量其中simn表示与的余弦相似度;
将向量按从大到小的顺序排列,得到其中每个元素已做正则化处理
计算缺陷报告和代码文件的基于协同过滤算法的缺陷报告相似度这里n≤3;
S43:基于缺陷修复历史的相似度
新建代码文件修复事件集合表示代码文件被修复的历程,初始化为空向量;
遍历缺陷报告集合B,对于每一个缺陷报告都有其对应的tl和若则在向量中添加元素tl;
遍历集合F,对于每一个向量将元素从晚到早顺序排列,得
遍历向量和集合F,对于每个缺陷报告和代码文件若对应的提交时间为tsl,对应的修复事件向量为将中大于tsl的元素删除,得计算缺陷报告和代码文件的基于缺陷修复历史的相似度
p为正整数,K值根据软件缺陷报告提交的频率决定;
S44:类名相似度
遍历缺陷报告集合B和向量对于每一个缺陷报告和代码文件名称snm,若记缺陷报告和代码文件的类名相似度反之,记将类名相似度归一化;
S45:结构信息相似度
将缺陷报告集合B拆分为集合Summary和集合Description,其中Summary是缺陷报告中的summary,记Description是缺陷报告中的description,记则
将代码文件集合S拆分成四个集合Class、Method、Var和Comment,Class是缺陷报告中的class,Method是缺陷报告中的method,Var是缺陷报告中var,Comment是缺陷报告中的comment,记则
遍历缺陷报告集合B和代码文件集合S,对于缺陷报告和代码文件使用简单共有词方法计算如下文本相似度:
计算缺陷报告和代码文件的结构信息相似度
S5:CNN非线性组合
S51:使用步骤S4中的五个特征构造训练数据集,对于每一个缺陷报告有5×ds个特征值,构造特征值矩阵
缺陷报告对应的标签为
S52:构建卷积神经网络
权重初始化采用标准正态分布;
C1:卷积层共有12个卷积核和12个偏移量,其中
5×1的卷积核3个,分别为得矩阵大小为1×ds;
4×1的卷积核3个,分别为得矩阵大小为2×ds;
3×1的卷积核3个,分别为得矩阵大小为3×ds;
2×1的卷积核3个,分别为得矩阵大小为4×ds;
C2:池化层采用单列最大池化策略;
C3:采用矩阵拼接的形式构建新矩阵,共得到如下4个矩阵
是由拼接而成,大小为4×ds;
是由拼接而成,大小为4×ds;
是由拼接而成,大小为4×ds;
是由拼接而成,大小为4×ds;
C4:卷积层共有3个卷积核和3个偏移量,卷积核大小为3×1,得12个矩阵,大小都为2×ds;
C5:卷积层共有3个卷积核和3个偏移量,卷积核大小为2×1,得36个矩阵,大小都为1×ds;
C6:全连接层,权重矩阵为偏移向量B6,
C7:分类,将C6展开得得缺陷报告的预测值向量Yl满足
其中,
误差函数:
采用梯度下降法更新参数;
S6:对于新的缺陷报告通过S4计算5个特征值,构建特征矩阵,利用S5已训练好的CNN模型,得出对应预测值向量
对到进行大小排序,得可能具有缺陷的代码文件列表,排名越靠前可能性越大。
2.根据权利要求1所述的基于深度神经网络的软件缺陷定位方法,其特征在于,所述缺陷报告、代码文件以及API文档通过文本分词、去停用词和提取词干的操作进行预处理得到缺陷报告集合B,代码文件集合S以及API文档集合D。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆大学,未经重庆大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910368699.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种测试报告自动生成装置及方法
- 下一篇:网页端的操作回放方法和系统