专利汇可以提供面向bug报告的细粒度缺陷定位方法专利检索,专利查询,专利分析的服务。并且本 发明 提出了 软件 维护领域内的一种面向bug报告的细粒度 缺陷 定位 方法,包括以下步骤:首先基于历史bug报告得到缺陷描述 特征向量 ,构建高频词语料库; 抽取 缺陷所在代码 块 ,构造代码语义矩阵;将特征向量和代码语义矩阵输入神经网络,得到 预测模型 ;根据功能相似的程序训练得到神经网络模型;对新bug报告进行一次语义相近词的替换,将替换后的特征向量输入到预测代码构造模型后输出代码语义矩阵;将新bug报告所对应的源代码划分成代码基本块,并分别编码成代码语义矩阵,构成代码语义矩阵列表;最后比较代码语义矩阵之间的相似性得到相似度最高的代码块,本发明将缺陷定位范围精确到代码基本块级别,能够使得 软件缺陷 修复工作更加高效。,下面是面向bug报告的细粒度缺陷定位方法专利的具体信息内容。
1.一种面向bug报告的细粒度缺陷定位方法,其特征在于,包括以下步骤:
步骤1、将历史bug报告中问题描述部分的自然语言处理成缺陷描述特征向量,作为总的描述词语料库,同时选取出现频率排在前k的单词向量,构建高频词语料库;
步骤2、利用抽象语法树技术提取程序结构,得到历史源代码文件中缺陷所在的代码块语法树,基于语法树从控制流和数据流的角度,构造变量及基本块的特征向量,然后将代码块编码为代码语义矩阵;
步骤3、根据步骤1中的缺陷描述特征向量和步骤2中的代码语义矩阵构造深度神经网络,训练得到预测代码构造模型;
步骤4、根据功能相似的程序构造神经网络,训练得到比较代码相似度模型;
步骤5、基于步骤1的高频词语料库对新bug报告的缺陷描述特征向量进行一次语义相近词的替换,将替换后的特征向量输入步骤3中的预测代码构造模型后输出代码语义矩阵;
步骤6、基于抽象语法树技术,将新bug报告的全部源代码文件划分成代码基本块,并分别编码成代码语义矩阵,构成代码语义矩阵列表;
步骤7、利用步骤4得到的模型,根据步骤6中的代码语义矩阵列表与步骤5中代码语义矩阵的相似度,对步骤6中的代码语义矩阵列表进行排名,输出相似度排在前n的代码语义矩阵所对应的代码基本块。
2.根据权利要求1所述的面向bug报告的细粒度缺陷定位方法,其特征在于,步骤1和步骤2中所述的历史bug报告和历史源代码文件是从已修复缺陷库中抽取得到的,并且历史bug报告和历史源代码文件之间存在对应关系。
3.根据权利要求1所述的面向bug报告的细粒度缺陷定位方法,其特征在于,步骤1中所述的构建高频词语料库的具体步骤如下:
步骤1-1:对历史bug报告进行分词,去停用词和词干提取等自然语言处理操作,得到单词列表;分词包括去除标点符号,和将一个完整的句子转换成单词列表;去除停用词是删去经常使用的且对于整个句子的语义信息没有太大贡献的词语;词干提取是将列表的每个单词的衍生词还原成相应的原形;
步骤1-2:基于单词的上下文信息,将单词转换为向量表示,并将所有的向量构建成总的描述词语料库;
步骤1-3:选取出现频率排在前k的单词向量构成高频词语料库。
4.根据权利要求1所述的面向bug报告的细粒度缺陷定位方法,其特征在于,步骤2中所述的划分出缺陷所在的代码块,其划分粒度为代码基本块;
代码基本块被定义为程序顺序执行的语句序列,其中只有一个入口和一个出口,且如果这个基本块的第一个语句被执行了,那么基本块内所有语句都会按照顺序仅执行一次。
5.根据权利要求1所述的面向bug报告的细粒度缺陷定位方法,其特征在于,步骤2中所述的利用抽象语法树提取程序结构的具体步骤包括:
步骤2-1:将修改前后的源代码表征为抽象语法树的形式;
步骤2-2:对比修改前后代码得到的抽象语法树,在修改前的源代码中定位到缺陷所在基本块;
步骤2-3:得到缺陷所在的代码基本块。将所有的含有缺陷的基本块构建成含有缺陷的基本块集。
6.根据权利要求1所述的面向bug报告的细粒度缺陷定位方法,其特征在于,步骤2中所述的将代码块编码为一个代码语义矩阵的具体步骤为:
步骤2-4:基于抽取得到的代码块,提取其控制流和数据流信息,包括变量的类型、基本块的类型和操作类型等;
步骤2-5:根据这些信息构造特征向量,该特征向量可以表示代码块中的变量和基本块的特征;
步骤2-6:以该特征向量作为矩阵的元素,以变量或基本块作为行和列,构建语义矩阵。
7.根据权利要求1所述的面向bug报告的细粒度缺陷定位方法,其特征在于,步骤3中所述的根据缺陷描述特征向量和代码语义矩阵构造深度神经网络,训练得到预测代码构造模型的具体步骤包括:
步骤3-1:以同一份历史bug报告中得到的bug描述特征向量Mi(i=1,2……)和历史源代(1)
码的语义矩阵T为输入,构造第一层隐含层,对输入的两种数据建立初步的联系函数ai(T,Mi)(i=1,2……);
步骤3-2:对步骤3-1的隐含层进行k次迭代训练,完善特征向量和对应语义矩阵的联系函数,即ai(n+1)(a1(n),a2(n),a3(n)……)(i=1,2,……,n=1,2……,k);
(k
步骤3-3:保留本次历史bug报告训练最终得到的联系函数A(T,Mi)(i=1,2……)=a+2)(a1(k+1),a2(k+1),a3(k+1)……),选取另一份历史bug报告进行训练;在选取的历史bug报告库中重复步骤3-1和步骤3-2;
步骤3-4:取上述步骤中训练得到的结果,表达出缺陷描述特征向量和其对应代码语义矩阵的关系函数,构造由缺陷描述特征向量计算其代码语义矩阵的模型,称之为预测代码构造模型,并作为神经网络的输出。
8.根据权利要求1所述的面向bug报告的细粒度缺陷定位方法,其特征在于,步骤4中所述的根据功能相似的程序构造神经网络,训练得到比较代码相似度模型的具体步骤包括:
步骤4-1:以实现某一功能的多个程序Mi(i=1,2……)为神经网络的输入,并构建相似度比较函数ai(1)(Mi)(i=1,2……);
步骤4-2:通过k次迭代训练,完善计算同一功能程序相似度的函数,即ai(n+1)(a1(n),a2(n),a3(n)……)(i=1,2,……,n=1,2……,k);
步骤4-3:重复步骤4-1和步骤4-2,保留最终函数A(Mp,Mq)=∑ai(k+1)/n(i=1,2……,n),并对这些函数进行迭代训练,得到能普遍计算代码相似度的函数并输出。
9.根据权利要求1所述的面向bug报告的细粒度缺陷定位方法,其特征在于,步骤5中所述的基于高频词语料库对新bug报告的缺陷描述特征向量进行一次语义相近词的替换,包括:
步骤5-1:进行分词、去停用词和操作和词干提取操作,将新bug报告处理成单词列表;
步骤5-2:基于总的描述词语料库,将新bug报告中的词替换成总的描述词语料库中的单词向量;对于在总的描述词语料库中没有出现过的词,为了不丢失其语义信息,对其进行一次语义相近词的替换;
步骤5-3:基于余弦相似性,对于步骤5-2中没有在总的描述词语料库中出现的词语,在高频词语料库中搜索并返回与其相似度最高的单词向量,如果与相似度最高的单词向量之间的相似度值低于M,则认为高频词语料库中没有与这个词语义相近的词语,则不予替换;
否则,进行替换。
标题 | 发布/更新时间 | 阅读量 |
---|---|---|
一种基于数据欠采样和集成学习的软件缺陷数目预测方法 | 2020-05-15 | 758 |
一种基于特征选择和集成学习的软件缺陷个数预测方法 | 2020-05-12 | 175 |
回归测试的流程覆盖方法、服务器及计算机可读存储介质 | 2020-05-16 | 945 |
一种基于大数据的通信设备检修管理系统 | 2020-05-08 | 404 |
一种基于频谱定位和可视化定位软件缺陷的方法 | 2020-05-19 | 16 |
一种基于度量技术的计量终端软件质量量化评价方法 | 2020-05-20 | 611 |
一种基于Transformer的软件缺陷预测方法 | 2020-05-14 | 756 |
一种面向开源软件缺陷特征深度学习的软件缺陷预测方法 | 2020-05-16 | 827 |
一种软件缺陷检测方法、装置、计算机设备和存储介质 | 2020-05-08 | 730 |
一种跨项目软件缺陷预测方法 | 2020-05-18 | 418 |
高效检索全球专利专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。
我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。
专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。