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

一种基于缺陷报告文本主题分析的缺陷定位方法技术

技术编号:15690796 阅读:80 留言:0更新日期:2017-06-24 03:28
本发明专利技术公开一种基于缺陷报告文本主题分析的缺陷定位方法,为解决缺陷报告会给开发人员带来严重的负担,对缺陷跟踪管理系统中已经解决的缺陷报告进行文本分析,获取缺陷报告与修复代码之间的关联关系,并以此分析未解决的缺陷报告,为开发人员提供新的缺陷报告可能的待修复源代码文件列表,从而提高软件项目的维护效率。我们在监督式文本主题模型Labeled‑LDA(LLDA)的基础上提出了标签生成子串的改进模型Label to SubStrings(L2SS)。在开源项目Eclipse数据集上的实验表明,基于L2SS模型的缺陷定位方法较传统的文本主题模型具有更高的预测效果。

Defect locating method based on subject analysis of defect report text

The invention discloses a method for locating defects defects report text based on topic analysis, in order to solve the defects of the report will bring serious burden to the developer, the text analysis of the defect report has to solve the defect tracking management system, obtain the relationship between the defect report and fix the code, and the analysis of defect report did not solve this. Provide defect report new possible to repair the source code file list for developers, so as to improve the maintenance efficiency of software project. We in the supervised text topic model Labeled LDA (LLDA) is proposed on the basis of substring label generation improved model Label to SubStrings (L2SS). Experiments on Eclipse data sets of open source projects show that the defect localization method based on L2SS model has higher prediction effect than traditional text topic model.

【技术实现步骤摘要】
一种基于缺陷报告文本主题分析的缺陷定位方法
本专利技术涉及一种基于缺陷报告文本主题分析的缺陷定位方法,利用已解决缺陷报告中的文本内容,实现未解决缺陷报告缺陷源代码文件的定位。在主题分析技术的基础上,利用标签词语子串频繁出现在相应缺陷报告的特性,添加了词语生成的途径,有效提高了基于缺陷报告缺陷源代码文件定位的准确度。
技术介绍
在大型开源软件开发过程中,广泛使用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.指派给别的开发人员,状态维持为新(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确认后,转变为关闭(CLOSE)Verified(已经证实)QA已经确认对于这个bug的解决方案是成功的。处于这种状态的bug当他们所存在的产品正式发布之后,状态将转变为关闭(CLOSE)。Closed(已关闭)bug处于这种状态可视为已死亡,其解决方案是正确的。出于这种状态的bug要重新得到处理,只能通过转变他的状态为重开(REOPEN)。有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系统中缺陷状态为Variefied且解决状态为Fiexed的缺陷报告,通过对缺陷报告进行主题分析,建立需要修复文件与缺陷报告文本之间的联系。目前常见的主题分析技术包括隐含语义分析(LSA)和隐含狄利克雷分布(LDA)模型等。LDA模型是无监督模型,为解决带监督问题,还有多个扩展模型如Slda,Labeled-LDA等。由于缺陷报告包括了文本和需要修复的文件,同时对应修复文件可能有多个,因此本专利技术基于Labeled-LDA模型,并进行拓展,构成L2SS模型。在缺陷报告中,因为需要修复的文件名是一串词语由“.”拼接而成,这些词语代表了此文件代码所在项目的各级模块名。在大型开源项目中,模块命名需要符合相应项目命名规范,反映其对应模块的用途。在缺陷报告中,经常会提到缺陷源代码文件所对应的各级模块名以及表示这些模块用途的词语,而这些词语又对应是相应缺陷源代码文件名的子串,具有很强的相关信息。之前基于缺陷报告文本主题分析进行缺陷定位的模型中没有对缺陷源代码文件名子串词进行特殊处理,丢失掉这些强相关词语的重要信息,难以满足我们需要的效果。
技术实现思路
传统文本主题分析技术忽略了缺陷报告的特点,因此根据缺陷报告的文本内容进行缺陷源代码文件定位准确度不高。L2SS模型通过增加词语的生成模式,有效针对缺陷报告文本特征,提高了对缺陷源代码文件定位的准确度。本专利技术基于Labeled-LDA模型,进一步添加了标签子串词生成途径,提出了基于标签生成子串的主题模型,并给出了一种基于此主题模型的缺陷定位方法,有效的提高了缺陷定位的准确率和召回率。技术方案:一种基于缺陷报告文本主题分析的缺陷定位方法,在Labeled-LDA的基础上提出了标签生成子串的文本主题模型L2SS,同时基于CVB0方法给出了L2SS模型的参数估计,最终根据模型参数来得出新的缺陷文本对需要修复文件的疑似度排序,从而实现了一种基于文本主题分析的缺陷定位系统。具体包括如下部分:1)基于标签生成子串的文本主题模型-L2SS;2)基于CVB0的L2SS模型求解及缺陷报告主题推断方法。1)基于标签生成子串的文本主题模型-L2SS将缺陷源代码文件对应的模块名作为Labeled-LDA的标签,直接对应LDA模型中的主题。在L2SS模型中,由主题生成词的过程存在两种可能,一种可能是按LDA模型由主题抽取词语,另一种可能是直接生成主题词的子串。在缺陷报告文档中,会频繁出现缺陷所在模块的模块名以及其子串。相对于传统的LLDA模型,本专利技术有效表示出缺陷报告的频繁出现标签词及其子串的特征,因此可以显著提高缺陷预测的准确度。缺陷报告d可以表示成一个词袋其中wi表示为文档中第i个单词。所有缺陷报告的所有词语构成词汇集V。所有缺陷报告文本主题用对应的标签l表示。每个主题l都存在一个先验分布为贝塔分布的二项分布βl~Beta(·|δ),每个主题都有两种途径生成词语,由二项分布βl抽样选取出来分开关变量κ决定最终选取的生成途径。第一种途径是从词汇集V中根据分布从V中抽取词语,是先验分布为狄利克雷分布的多项分布。第二种途径是从主题l对应标签名的子串集合Sl中根据分布从Sl中抽取词语,是先验分布为狄利克雷分布的多项分布。κ有两种值:1和2,当κ=1时,表示主题l本文档来自技高网
...
一种基于缺陷报告文本主题分析的缺陷定位方法

【技术保护点】
一种基于缺陷报告文本主题分析的缺陷定位方法,其特征在于:在Labeled‑LDA的基础上提出了标签生成子串的文本主题模型L2SS,同时基于CVB0方法给出了L2SS模型的参数估计,最终根据模型参数来得出新的缺陷文本对需要修复文件的疑似度排序,此方法的主要内容包括:1)基于标签生成子串的文本主题模型‑L2SS;2)基于CVB0的L2SS模型求解及缺陷代码预测方法;基于标签生成子串的文本主题模型‑L2SS:将缺陷源代码文件对应的模块名作为Labeled‑LDA的标签,直接对应LDA模型中的主题;缺陷报告d可以表示成一个词袋

【技术特征摘要】
1.一种基于缺陷报告文本主题分析的缺陷定位方法,其特征在于:在Labeled-LDA的基础上提出了标签生成子串的文本主题模型L2SS,同时基于CVB0方法给出了L2SS模型的参数估计,最终根据模型参数来得出新的缺陷文本对需要修复文件的疑似度排序,此方法的主要内容包括:1)基于标签生成子串的文本主题模型-L2SS;2)基于CVB0的L2SS模型求解及缺陷代码预测方法;基于标签生成子串的文本主题模型-L2SS:将缺陷源代码文件对应的模块名作为Labeled-LDA的标签,直接对应LDA模型中的主题;缺陷报告d可以表示成一个词袋其中wi表示为文档中第i个单词;所有缺陷报告的所有词语构成词汇集V;所有缺陷报告文本主题用对应的标签l表示;每个主题l都存在一个先验分布为贝塔分布的二项分布βl~Beta(·|δ),每个主题都有两种途径生成词语,由二项分布βl抽样选取出来分开关变量κ决定最终选取的生成途径;第一种途径是从词汇集V中根据分布从V中抽取词语,是先验分布为狄利克雷分布的多项分布;第二种途径是从主题l对应标签名的子串集合Sl中根据分布从Sl中抽取词语,是先验分布为狄利克雷分布的多项分布;κ有两种值:1和2,当κ=1时,表示主题l从词汇集V中抽取词语,当κ=2时,表示主题l从标签子串集合Sl中抽取词语;每篇缺陷报告d对于所有主题l还有一个先验分布为贝塔分布的二项分布是从抽样出开关变量,当时表示文档d不选取此主题,当时表示文档d选取此主题。缺陷报告d在所有的主题中得到先验分布为狄利克雷分布的多项分布θd。L2SS模型的缺陷报告生成过程如下:对于每一个主题l1)取样生成主题l上的开关分布βl=(βl1,βl2)T~Beta(·|δ)2)取样生成主题l上对于所有词语的分布3)根据主题l选择对应标签子串集合Sl得到l对应的子串词语的先验分布ηl4)取样生成模块标签l上对于l子串词语的分布对于每篇缺陷报告d对于每个主题l1)取样生成文档d对应的模块标签选择分布2)根据标签选择得到文档d对应的主题分布的先验分布αd=Ld×α3)取样生成文档d对应的主题分布对于缺陷报告中每个位置i1)取样生成主题zi∈Ld~Mult(·|θd)2)取样生成主题zi的开关变量κ∈{1,2}~Bernoulli(·|βl)ifκ=1do取样生成单词ifκ=2do取样生成单词其中Beta表示贝塔分布,Mult表示多项分布,Bernouli表示二项分布,Dir表示狄利克雷分布;依据此上过程,可以得到L2SS的概率图模型,同时得到词和主题生成的联合概率:2.如权利要求1所述的基于缺陷报告文本主题分析的缺陷定位方法,其特征在于,基于CVB0的L2SS模型求解及缺陷报告主题推断方法:LDA模型参数推断常采用吉布斯采样的方法,即用p(zi=l|z-i,w;α,η,δ)来对各个词语的主题进行采样,不断迭代直至收敛;而吉布斯采样收敛速度较慢,采用CVB0方法进行参数推断;在LLDA模型中,CVB0方法为文档中的每个位置的词语赋予一个势函数向量l代表标签l,d代表文档的编号,i代表词在文档中的位置;γl|d,i的值就等于p(zi=l|z-i,w;α,η,δ),对于文档d中没有出现的标签l,就将γl|d,i的值定为0在L2SS模型中,因为词可能有两种生成方式,因此L2SS模型中,可由标签子串生成的词语的分成两个势...

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

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

1