Page 218 - 《软件学报》2020年第9期
P. 218

郭肇强  等:基于信息检索的缺陷定位:问题、进展与挑战                                                      2839


         排名靠前的制品中抽取附加的词汇来扩充查询语句.
             2017 年,Chaparro 等人在文献[40,46]中将缺陷报告的内容详细地划分为 OB(observed behavior),EB
         (expected behavior),S2R(step to reproduce)这 3 个部分,他们使用启发式的规则识别和检测这 3 部分内容,并发现
         多数缺陷报告中缺少 EB 和 S2R 这两部分内容.接着,他们在文献[51]中进行对比实验,发现使用 OB 替代整个报
         告的内容来构造查询语句,是一种简单有效的方法来重构低质量的缺陷报告.在此基础上,Chaparro 等人                                 [73] 在
         2019 年了扩大了实验对象和数据集,发现使用 OB 和报告标题的组合内容替代整份缺陷报告来定位能够达到
         更好的效果.
             2018 年,Rahman 等人 [35,42] 提出使用一种上下文感知的查询重构方法 BLZZARD.他们的重构方法对缺陷报
         告中的两类重要信息——堆栈踪迹和程序元素(例如类名、方法名等)分别构造踪迹图和文本图模型,对这两部
         分中的词汇进行建模.在构造好的图模型基础上,使用 PageRank 算法对图中的词汇进行加权,并根据权重来选
         取加入查询语句的词汇.
             2019 年,Kim等人 [102] 提出目前最新的自动查询重构方法.他们的方法包含 3个组件:1)  缺陷报告扩展;2)  候
         选词提取;3)  查询扩展.首先,他们使用缺陷报告中的附件信息(attachment)扩展缺陷报告;然后,在提取候选词
         时,通过将情感词汇加入到停用词表来将它们移除,并且使用伪相关反馈的方式从源码中检索文件并移除噪音
         文件;最后,他们对检索到文件中的词汇加权,并选择权重较高的部分来扩展查询语句.
         3.4   应用深度学习
             随着深度学习技术的发展,近年来,研究者们将深度学习技术引入缺陷定位领域.相较于基于信息检索的缺
         陷定位只考虑了缺陷报告和源代码文本上的特征,基于深度学习的缺陷定位方法可以提取缺陷报告和源代码
         文件更深层和更高维的抽象特征.这类方法可以减少人为设计特征的工作量,同时也提高了缺陷定位的准确率.
             2017 年,Lam 等人 [55] 将深度神经网络(DNN)与信息检索技术中的 rVSM 相结合进行缺陷定位.首先,他们使
         用 rVSM 收集缺陷报告和源代码文件之间文本相似性的特征;然后,他们用 DNN 来学习缺陷报告中的术语,并将
         它们与源代码中潜在不同的代码字段关联起来.实验证明:深度神经网络和信息检索技术可以很好地相互补充,
         能够实现比单个模型更高的缺陷定位精度.
             2018 年,Xiao 等人 [64] 提出一个深度学习方法,在字符级别解释缺陷报告,并使用语言模型来进行分析.该方
         法类似于机器翻译,首先将缺陷报告和源代码文件用字符表示,然后将结果传入到 CNN 模型中进行卷积操作,
         最后把 CNN 的结果应用在基于 RNN 的编码器-解码器中进行缺陷定位.
             同年,Xiao 等人  [96] 使用卷积神经网络和级联森林对语义信息和结构特征建模.首先,采用具有多个过滤器的
         卷积神经网络和具有多粒度扫描的随机森林集合,从缺陷报告和源文件中提取词向量的语义和结构特征;随后
         从级联森林进一步提取更深层次的特征,并观察缺陷报告与源代码文件之间的相关关系.
             2019 年,Xiao 等人 [77] 提出使用词嵌入和强化的卷积神经网络来提升缺陷定位性能.他们使用词嵌入来表示
         缺陷报告和源文件中保留语义信息的单词,并使用不同的 CNN 模型来提取它们的特征.Polisetty 等人                          [101] 研究了
         基于深度学习的缺陷定位模型是否能够满足参与人员的需求,他们的结果表明:虽然深度学习模型比经典的机
         器学习模型表现得更好,但它们只能部分满足研究者实验中设定的采用标准.Huo 等人                             [69] 提出了一种跨项目缺
         陷定位的深度迁移学习方法.使用他们所提出 TRANP-CNN 方法,可以从源项目中提取出可转移的语义特征,充
         分利用目标项目中的标记数据进行有效的跨项目缺陷定位.

         3.5   小   结
             本节从更换检索模型、使用特征分析、进行查询重构和应用深度学习这 4 个方面详细介绍了在改良 IRBL
         模型近年的研究进展.下面简述主要发现:
             (1)  相比于其他 IR 模型,VSM 作为一种简单的 IR 模型,能够在 IRBL 的研究中获得较好的性能.因此,目前
                 超过半数的 IRBL 方法都使用 VSM 或者 VSM 的变体作为他们方法中 IR 模型;
             (2)  从代码库和缺陷报告中挖掘出的特征里,对提升缺陷定位方法性能十分有效的是版本历史、相似报
   213   214   215   216   217   218   219   220   221   222   223