Page 143 - 《软件学报》2025年第4期
P. 143
曹帅 等: 深度学习在基于信息检索的缺陷定位中的应用综述 1549
对于未被引用或引用次数较少的使用深度学习的基于信息检索的缺陷定位方法, 结合第 2.1 节中关于数据集
的统计信息, 可以找出各个缺陷定位粒度上针对各个数据集最先进的 (state-of-the-art) 方法.
(1) 在文件级别的基于信息检索的缺陷定位方法中, 由于文献较多且使用的数据量存在差别, 因此只比较使用
数据与第 2.2 节中统计表格众数接近的方法或论文中直接对比方法的效果. 其中, 针对数据集 Eclipse 和 SWT 的
基于信息检索的缺陷定位方法 bjXnet [19] 取得了最好的实验结果; 在数据集 JDT, Tomcat 和 Birt 上 DreamLoc [49] 有
更好的表现效果; 在数据集 AspectJ 和 PDE 上, LS-CNN [29] 和 CG-CNN [39] 有着相对更好的效果. 使用 AUC 评价指
标的方法数量较少, LS-CNN 针对各个数据集上有着指标 AUC 最好的评价结果.
(2) 在跨项目缺陷定位领域, TROBO [18] 相比于其他的跨项目的基于信息检索的缺陷定位方法可以取得更好的
结果.
(3) 针对方法级别的缺陷定位的效果都不尽如人意, BugPecker [17] 的定位效果相对更好.
(4) 现有变更级别的基于信息检索的缺陷定位方法使用的数据量大小差别较大, 无法比较其效果的好坏, 但针
对变更集的缺陷定位性能仍比不上大多数文件级别的基于信息检索的缺陷定位方法.
陷报告关联多个代码模块时, 定位较差效果. 虽然通过深度学习模型的使用可以更好地提取出缺陷报告和代码模
6 当前方法的不足与未来研究方向
深度学习技术在基于信息检索的缺陷定位领域的应用已经引起了越来越多学者的关注, 提出的方法已经
能较好地定位到导致缺陷的代码文件. 针对更细粒度的缺陷定位和跨项目的缺陷定位也有相关方法进行了尝
试. 根据前文总结的基于信息检索的缺陷定位方法, 使用深度学习的基于信息检索的缺陷定位方法擅长缺陷报
告与源文件中文本的处理, 尤其是当缺陷报告中含有导致缺陷发生的代码模块中相关词汇时, 会带来良好的定
位性能.
目前的方法都直接对整份缺陷报告的文本内容与源文件进行匹配, 缺少对缺陷报告中缺陷类别的讨论. 由于
各种深度学习模型只能给出导致缺陷发生的源文件推荐列表, 并不能给出由缺陷报告定位源文件的原因, 因此目
前针对使用深度学习的基于信息检索的缺陷定位方法到底适合什么缺陷报告的缺陷定位并不清楚. 因此, 在本节
中根据前几节的内容对目前使用深度学习的基于信息检索的缺陷定位方法的边界与不足进行分析, 并提出未来可
能的研究方向.
6.1 基于信息检索的缺陷定位方法的边界与不足
6.1.1 方法实用性
目前使用深度学习的基于信息检索的缺陷定位方法的准确性较低, 将其应用于实际项目的缺陷定位存在距
离, 因此已经提出的方法仅可作为辅助工具为开发人员提供辅助信息, 在实际缺陷定位中, 仍然依赖开发人员进行
人工判断. 尤其是在实际项目的缺陷定位中, 更多人倾向较细粒度和跨项目的定位, 如今方法的性能还不尽如人
意. 另外需要注意的是, 当前评价指标数据较好的方法并不能等同于该方法能在实际的应用中更好地准确定位缺
陷文件. 因此目前的方法仍停留在理论研究阶段, 距方法实践于工程项目面临较多挑战.
6.1.2 依赖缺陷报告和源文件的文本信息匹配
在基于信息检索的缺陷定位方法中, 相比于没有文本信息匹配的缺陷报告和源文件对, 若缺陷报告中的内容
包含与源文件中代码相似的单词, 缺陷定位的效果良好. 但当需要定位的代码模块不包含相关文本信息或一份缺
块中深度语义信息, 一定程度上使得定位性能有所提升, 但目前的方法仍然依赖于缺陷报告和源文件的文本相似
性, 因此面对细粒度的代码模块仍然效果较差.
6.1.3 统一的评测数据集
使用深度学习的基于信息检索的缺陷定位方法之间使用的数据集存在差别, 尤其是针对方法级别和变更级别
的较小粒度的基于信息检索的缺陷定位方法之间使用数据集的规模差距很大, 无法进行结果的横向对比. 目前还
没有相关的研究整合统一的有效数据集, 只有 Bench4BL [21] 和 Akbar 等人 [5] 对基于信息检索的缺陷定位方法使用