Page 129 - 《软件学报》2025年第4期
P. 129
曹帅 等: 深度学习在基于信息检索的缺陷定位中的应用综述 1535
于信息检索的缺陷定位研究论文在不同年份的分布情况, 从图中可以看出, 深度学习技术从 2015 年首次被应用,
并在近 3 年被广泛应用 (近 3 年的论文占总数超过 2/3). 图 5 和图 6 分别展示了收录这 54 篇论文的期刊和会议
的 CCF 等级分布以及录用论文的数量分布. 其中大部分论文 (超过 80%) 收录于 CCF 列表中的会议与期刊 (会议
有 25 篇, 期刊有 21 篇. 有 11 篇收录于 CCF-A 类). 收录最多的是 IJCAI, IEEE Access 各有 4 篇, 其次是 ICPC、
APSEC 以及 IST 期刊各 3 篇, 再次是 ASE 会议、TSE 期刊各有两篇. 各有 1 篇分别收录于 ICSE 与 AAAI. 统计
结果显示, 使用深度学习的基于信息检索的缺陷定位方法主要发表于软件工程领域的刊物, 但也分布于各人工智
能领域刊物, 目前尚未有相关的中文论文公开发表.
14
12
10 10
9 期刊
6
6 会议
5 11
4
4 3 8
1 1 12
3 6 6
−1
2015 2016 2017 2018 2019 2020 2021 2022 2023 CCF-A CCF-B CCF-C 其他
图 4 论文在不同年份的数量统计 图 5 论文收录会议期刊等级分布情况
4
4 4
3 3 3
3
2 2
2
1 1 1 1 1 1 1 1 1 1 1 1 1
1
0
ASE期刊
ASE会议
CIKM
ICPC
ICSE
AAAI
TKDE
APSEC
IST
TSE
DSN
EASE
ICST
ICDM
KSEM
KBS
QRS
DMKD
IJCAI 篇论文提出的方法进行跨项目缺陷定位, 有
IEEE Access
图 6 会议期刊数量分布统计
对检索出的 52 篇论文可以进行如下两种分类方式.
首先在定位方式上可以划分为跨项目缺陷定位方法与项目内缺陷定位方法. 跨项目缺陷定位是指当缺陷自动
定位方法需要被应用在一个非常新的项目上时, 新项目会缺少足够的训练数据, 甚至根本没有历史数据. 但是项目
的源文件数量也很多, 无法进行手动搜索定位. 为此, 跨项目缺陷定位的目的就是针对不成熟项目训练数据不足的
问题完成缺陷定位. 通过学习源项目 A 中缺陷报告和源文件的关系以及少量目标项目 B 中缺陷报告和源文件的
关系, 完成对 B 项目的缺陷定位. 项目内的缺陷定位是最常见的缺陷定位类型, 是大部分项目进行缺陷定位时选
择的方向. 项目内的缺陷定位只针对一个项目, 先学习项目中的已经确定关联的缺陷报告和源文件之间的关系, 当
给出一个相同项目但未被学习的缺陷报告, 可以在数据集的源文件中定位到缺陷所在的代码模块. 在本文调研的
52 篇论文中, 共有 6 46 篇论文的方法只针对项目内缺陷定位.
其次, 根据定位到代码缺陷的代码模块大小可以分为文件级别、方法级别、变更级别和行级别等. 根据不同
的应用场景和切实的缺陷问题, 开发人员对缺陷定位的粒度需求也不同. 缺陷定位的粒度是指给定一份缺陷报告,
检测出存在缺陷的代码模块序列的粒度, 比如文件级别的基于信息检索的缺陷定位方法的定位粒度是可能导致此
缺陷的文件序列. 常见的粒度可以分为文件级别、方法级别、代码变更级别等. 在本文调研的 52 篇论文中, 定位
到文件级别的有 48 篇, 方法级别的有 2 篇, 变更级别的有 2 篇.
根据以上分类, 我们整理了本文调研的所有论文并汇总在表 3 中. 表 3 的内容包含文献、年份、文献提出的
方法名、定位粒度、是否是跨项目评测、代码与数据集是否开源等信息. 其中 F, M, C 分别表示定位到文件级别,
方法级别, 变更级别, √表示是跨项目或者是开源的. 如果是仅数据集开源也单独做了标注.