当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于缺陷报告的缺陷代码路径定位方法技术

技术编号:21952157 阅读:29 留言:0更新日期:2019-08-24 17:36
本发明专利技术公开了一种基于缺陷报告的缺陷代码路径定位方法,基于深度学习的方法从已修复的缺陷报告和对应修复代码路径中学习出文本与代码之间的关联关系,从而对新缺陷报告进行关联缺陷代码文件路径的预测。具体包括2个部分:(1)基于缺陷报告的缺陷代码路径树生成模型BRSP;(2)基于规则约束的缺陷代码路径树预测算法。本发明专利技术的优点是可以根据缺陷报告给出关联的缺陷代码文件路径信息,辅助开发人员进行缺陷代码定位,节省开发人员的时间和精力,从而提高软件项目的维护效率。

A Defect Code Path Location Method Based on Defect Reporting

【技术实现步骤摘要】
一种基于缺陷报告的缺陷代码路径定位方法
本专利技术涉及一种基于缺陷报告的缺陷代码路径定位方法,属于软件测试

技术介绍
在大型开源软件开发过程中,广泛使用Bugzilla,Jira,GNATS,trac等缺陷跟踪管理系统来跟踪管理项目的缺陷。以Eclipse项目中的缺陷跟踪管理系统Bugzilla为例,在对整个项目进行开发、测试和维护的过程中,当软件开发参与者发现了项目中的Bug时,可以登录BugZilla系统提交一份缺陷报告。在BugZilla中,每个缺陷报告都有Status、Resolution这两个关键属性表示其状态。其中,Status表示bug的一般状态,下面是其取值和各个取值的说明以及转换的可能性。Unconfirmed(未证实)表明bug是最近加入到数据库的,没有人证实这个bug的存在。拥有“确定/取消Bug"权限的用户可以转变bug的状态为:1.确认这个bug,改变它的状态为新提交的(NEW)2.解决这个bug,标志为已解决(RESOLVED)New(新提交的)这个bug已经分发给某位开发人员处理。这个状态的bug可以转变为以下状态:1.当前被指派的开发人员接受该bug,状态转变为已指派(ASSIGNED)2.该bug被指派给别的开发人员,状态维持为新提交的(NEW)已解决,状态转变为已解决(RESOLVED)Assigned(已指派)这个bug尚未解决,但已经被指派给正确的人进行解决。这个状态的bug可能转换为以下状态:1.被指派给别的开发人员,状态转变为新提交的(NEW)2.被解决,状态转变为已解决(RESOLVED)Reopened(重新打开)这个bug曾经被解决了,但是解决方案是不正确的。例如,一个处于仅对我有效(WORKSFORME)的bug,当获得了更多的信息并且能够被再现时,将转变为重开(REOPENED)状态。这个状态的bug只能转换为以下状态:1.已指派(ASSIGNED)给某名开发人员2.被解决,状态转变为已解决(RESOLVED)Resolved(已解决)已经确定了一种解决方案,这种方案正在等待QA的确认。此状态的bug可转化为以下状态:1.重新开放,转变为重开放(REOPENED)2.QA确认后,转变为已验证(VERIFIED)3.QA确认后,转变为关闭(CLOSED)Verified(已经证实)QA已经确认对于这个bug的解决方案是成功的。处于这种状态的bug当它们所存在的产品正式发布之后,状态将转变为关闭(CLOSED)。Closed(已关闭)bug处于这种状态可视为已死亡,其解决方案是正确的。处于这种状态的bug要重新得到处理,只能通过转变它的状态为重开(REOPEN)。综上,bug的状态取值有New、Assigned、Resolved、Reopened、Fixed、Closed这几种。Resolution(解决方案),表明对bug是如何处理的,下面是其取值以及各个取值的说明和转换可能性。Fixed(已经修复)对这个bug的源代码做了修改,放入代码库并且经过了测试。Invalid(无效)BUG确认人员认为所描述的问题不是一个BUG,因此该问题也不会被修复。Won'tfix(不做修改)所描述的问题是一个bug,但由于某种原因不会进行修改。Later(以后修复)所描述的问题是一个bug,但当前版本不会修改这个bug。Remind(延时提醒)所描述的问题是一个bug,但尚未确定是否在当前版本进行修改。Duplicate(重复)所描述的问题是一个已存在bug。必须使用一个已存在的bugid对该bug进行标志。Worksforme(不可重现)无法根据描述对bug进行重现,阅读代码也无法解释所描述的问题。如果以后能够提供更多的细节再做处理,现在暂时存档。现有技术中,基于缺陷报告文本进行缺陷定位的模型忽略了同一模块中的文件相关性强的特点,丢失掉各级模块的关联信息,忽略了源文件路径的特点,因此根据缺陷报告的文本内容进行缺陷源代码文件定位准确度不高,难以满足用户需要的效果。
技术实现思路
专利技术目的:针对现有技术中存在的问题与不足,本专利技术提供一种基于缺陷报告的缺陷代码路径定位方法,利用BugZilla系统中缺陷状态为Verified且解决状态为Fixed的缺陷报告,通过对缺陷报告进行文本提取,建立需要修复文件的所在路径与缺陷报告文本之间的联系。目前常用于处理文本的主要是循环神经网络(RNN)模型,因为它能建模文字的先后顺序,保留语义。编解码(Encoder-Decoder)模型是对RNN模型的较好扩展,它能解决输入输出数据都是序列的问题。由于缺陷报告包括了文本(文字序列),同时对应着修复文件路径树的深度优先遍历序列,因此本专利技术基于编解码(Encoder-Decoder)模型,并进行拓展,构成BRSP模型。在缺陷报告中,因为需要修复的文件名是一串由“.”拼接而成的词语,这些词语代表了此文件代码所在项目的各级模块名。在大型开源项目中,模块命名需要符合相应项目命名规范,反映其对应模块的用途。根据这样的模块层级关系,我们可以从项目源文件路径树的根节点出发,依次找到待修复文件所属的各个模块,最终将途经的各个节点(节点即对应模块)组织成一棵文件路径树。技术方案:一种基于缺陷报告的缺陷代码路径定位方法,使用基于深度学习的方法从已修复的缺陷报告和对应修复代码路径中学习出文本与代码之间的关联关系,从而对新缺陷报告进行关联缺陷代码文件路径的预测。在缺陷代码路径定位模型的基础上,利用源文件路径存在层级结构的特性,添加了带有约束规则的路径树预测算法,有效提高了基于缺陷报告的缺陷源代码路径定位的准确度。具体包括如下部分:1)基于缺陷报告的缺陷代码路径定位模型BRSP的学习方法;2)基于规则约束的路径树预测算法。1)基于缺陷报告的缺陷代码路径定位模型BRSP的学习方法项目源文件的路径往往由多个模块构成。相对于传统的基于缺陷报告与源文件相似度比较的模型,本专利技术有效表示出相同模块下的文件具有强相关性并且路径每深入一层,缺陷文件所在范围即会有所缩小的特征,因此可以显著提高缺陷预测的准确度。将缺陷源代码文件的路径模块作为模型的预测标签;缺陷报告d可以表示成一个单词序列其中wi表示为文档中第i个单词,Nd表示缺陷报告d的单词序列单词的总数;所有缺陷报告的所有词语构成词汇集V;将单词序列Wd当做模型的输入,模型最终输出序列化的缺陷代码文件路径树。模型包含嵌入(embedding)层和编码器(encoder)以及解码器(decoder),而编码器(encoder)和解码器(decoder)分别包含三层循环神经网络层(RNN)。输入模型的单词序列Wd首先经过嵌入(embedding)层,对序列中的每个单词wi执行嵌入(embedding)操作,即首先获得每个单词的独热(one-hot)向量表示(独热向量是一个形状为1×Nd的向量,当前单词所在位置为1,其余位置均为0),然后与查找(look-up)矩阵(形状为Nd×dim的矩阵)相乘,最终得到一个形状为1×dim(dim为embedding大小)的向量作为当前单词的嵌入(embedding)表示。此时包含Nd个单词的单词序列Wd变成了一个Nd×dim的矩阵x本文档来自技高网
...

【技术保护点】
1.一种基于缺陷报告的缺陷代码路径定位方法,其特征在于:使用基于深度学习的方法从已修复的缺陷报告和对应修复代码路径中学习出文本与代码之间的关联关系,从而对新缺陷报告进行关联缺陷代码文件路径的预测,训练得到基于缺陷报告的缺陷代码路径定位模型;在基于缺陷报告的缺陷代码路径定位模型的基础上,利用源文件路径存在层级结构的特性,添加了带有约束规则的路径树预测算法。

【技术特征摘要】
1.一种基于缺陷报告的缺陷代码路径定位方法,其特征在于:使用基于深度学习的方法从已修复的缺陷报告和对应修复代码路径中学习出文本与代码之间的关联关系,从而对新缺陷报告进行关联缺陷代码文件路径的预测,训练得到基于缺陷报告的缺陷代码路径定位模型;在基于缺陷报告的缺陷代码路径定位模型的基础上,利用源文件路径存在层级结构的特性,添加了带有约束规则的路径树预测算法。2.如权利要求1所述的基于缺陷报告的缺陷代码路径定位方法,其特征在于,基于缺陷报告的缺陷代码路径定位模型BRSP的训练方法,包括如下内容:将缺陷源代码文件的路径模块作为模型的预测标签;缺陷报告d可以表示成一个单词序列其中wi表示为文档中第i个单词,Nd表示缺陷报告d的单词序列单词的总数;所有缺陷报告的所有词语构成词汇集V;将单词序列Wd当做模型的输入,模型最终输出序列化的缺陷代码文件路径树。3.如权利要求2所述的基于缺陷报告的缺陷代码路径定位方法,其特征在于,模型包含嵌入(embedding)层和编码(encoder)部分以及解码(decoder)部分,而编码(encoder)部分和解码(decoder)部分分别包含三层循环神经网络层;输入模型的单词序列Wd首先经过嵌入(embedding)层,对序列中的每个单词wi执行嵌入(embedding)操作,即首先获得每个单词的独热(one-hot)向量表示,然后与查找(look-up)矩阵相乘,最终得到一个形状为1×dim的向量作为当前单词的嵌入(embedding)表示;此时包含Nd个单词的单词序列Wd变成了一个Nd×dim的矩阵x,接着将该矩阵继续传递给模型的剩余部分。4.如权利要求3所述的基于缺陷报告的缺陷代码路径定位方法,其特征在于,使用三层循环神经网络RNN构建模型的编码(encoder)部分获取文本信息,使用RNN的其中一种变体:门控循环单元GRU,该模型的公式如下:zt=σ(Wz·[ht-1,xt])其中ht-1为GRU的上一时刻隐状态,而xt是当前时刻输入模型的单词,Wz为可训练参数,σ是sigmoid函数,公式为:rt=σ(Wr·[ht-1,xt])符号含义同上,其中最终得到了当前隐状态ht;经过同样的过程得到解码(decoder)...

【专利技术属性】
技术研发人员:吕建徐锋姚远唐士杰
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1