Page 140 - 《软件学报》2025年第4期
P. 140
1546 软件学报 2025 年第 36 卷第 4 期
报告和代码文件之间的潜在相关性分布. 将已修复的缺陷报告和源文件组成的真对与”由未修复缺陷报告和源代
码”生成的假对送入判别器以训练模型. 搜索项目目录树来生成文件路径, 而不是遍历所有代码文件的内容来构建
与真实缺陷接近的合成缺陷修复记录. 同时 BL-GAN 模型中在生成器和鉴别器中都采用了基于注意力的 Transformer
架构来处理缺陷报告, 在鉴别器中采用了新颖的多层 GCN 来处理图形视图中的源代码.
Zhu 等人 [18] 提出 TROBO 的深度迁移缺陷定位模型, 在对于源文件的学习上使用 GAN, 在编码表征后增加一
个项目感知的分类器来捕捉源代码抽象语法树的特征, 使用一个基于控制流图的特征提取器与项目辨别器来提取
源项目和目标项目之间的项目共享特征. 同时通过一个项目判别器旨在预测输入的项目标签, 即来自源项目或目
标项目.
Chen 等人 [58] 提出的 CGMBL 不同于常见的 GAN, CGMBL 有两个生成器和一个判别器, 分别将缺陷报告和
源代码的文本表示模型设为生成器. 鉴别器的功能是区分输入的特征向量是来自代码文件还是缺陷报告. 对于来
自两个文本呈现层的不同文本特征. 使用一个 CNN 和一个全连接网络作为判别器来区分输入特征的来源. 两个生
成器的目标是捕捉文本特征, 骗取鉴别器无法判断特征向量的来源. 鉴别器的训练目标是正确区分特征向量的来
源. 在对抗性训练中, 两个生成器的输出差异在缩小, 这意味着生成器捕捉到了两个文本中的公共特征. 最后当鉴
出的缺陷报告匹配到对应的主题, 找到相似度接近的源文件. 再将源文件和缺陷报告送入
别器不能确定输入源时判断代码的表示和报告已经学会了公共特征.
总而言之, GAN 在基于信息检索的缺陷定位任务中表现出了其独特的优势, 但该模型也存在一些缺点, 例如
训练过程通常不稳定, 且训练所需时间和计算成本较高, 这对提升基于信息检索的缺陷定位方法的实时性带来一
定挑战.
4.2.5 其他提取方法
除了以上的方法, 还有一些使用多种深度学习技术的基于信息检索的缺陷定位方法, 比如同时使用 RNN 和
CNN 等, 通过组合深度学习模型, 可以将不同深度学习模型的强项组合在一起, 发挥两者的共同优势.
Zhang 等人 [43] 提出的 KGBugLocator 使用 RNN 提取缺陷报告特征, 由于 RNN 不擅长处理长文本, 使用 CNN
提取源文件特征. 使用一个关键词监督的双向关注机制, 使用源文件和缺陷报告之间的交互信息来规范模型, 随后
通过一个双向关键词注意力机制提取了特定于缺陷和特定于代码的特征, 以分别通过特定于缺陷的注意力和特定
于代码的注意力来丰富特定于缺陷的代码表示和特定于代码的缺陷表示.
Qi 等人 [49] 提出的 DreamLoc 使用 deep wide 框架来进行缺陷定位. 模型分为深度和广度两部分, 宽度组件是
一个广义的线性模型, 整合了 5 个信息检索特征. 深度组件是一个前馈神经网络, 通过 word2vec 将缺陷报告和源
文件编码表征并计算相关性匹配得分, 计算每个缺陷报告标记和源文件之间的相关性匹配分数, 通过门控机制汇
总所有缺陷报告标记的分数进行全局匹配, 得到缺陷报告和源文件之间的最终相关性匹配分数. 最后, 使用密集
层 Dense Layer 来融合宽度组件和和深度组件的结果, 并获得最终的相关性匹配得分.
Xiao 等人 [36] 提出一种将每个字符编入 CNN 并结合 RNN 的方法, 将缺陷报告和源文件都用字符级表达输入
到 CNN 中, 缺陷报告第 n 个词的 CNN 输出送入 RNN 编码器的第 n 个 LSTM 中, 编码器的最终状态是上下文向
量 c, 解码器与编码器类似, 源文件的第 n 个词的 CNN 输出送入 RNN 解码器的第 n 个 LSTM 中, 最后输出相关性
得分.
Yang 等人 [51] 提出了一种无监督的基于信息检索的缺陷定位的方法, 先通过无监督学习模型学习每个缺陷报
告, 根据词频等信息给出几类主题. 主题表示了其可能的特征. 通过相关性计算确定缺陷报告的特征. 随后对于给
CNN 进行提取特征, 并
将 CNN 提取的特征作为 LSTM 的输入并产生一个对应的源文件作为输出, 最后进行评分完成缺陷定位.
Luo 等人 [55] 提出的 CoLoc 通过堆叠 Transformer 编码器层构建. 先使用数据量多的数据集预训练 CoLoc, 在
预训练过程中挑选 15% 的标记用特殊标记 [MASK]、随机标记、不标记这 3 种方式来遮盖并增加 dropout 噪音
来进行数据增强, 以便 CoLoc 进行对比学习预训练. 最后对预训练完成的 CoLoc 模型微调以便缺陷定位.
Chakraborty 等人 [63] 提出的 RLocator 是一种使用强化学习技术的基于信息检索的缺陷定位方法, 将缺陷定位
问题形式化为马尔可夫决策过程 MDP. 对于强化学习的过程, 从候选列表中选择一个文件并将其移到排名列表作