Page 126 - 《软件学报》2025年第9期
P. 126
谢生龙 等: 基于多模态融合的软件缺陷协同分派方法 4037
network model. Finally, correlations between bugs and developers are captured by matching inner products, and Bayesian personalized
ranking (BPR) is utilized for bug report recommendation and triaging. Comprehensive experiments conducted on publicly available datasets
demonstrate that CBT-MF outperforms several state-of-the-art methods in bug triaging.
Key words: bug triaging; imbalance; multimodal fusion; graph convolution
随着现代软件工程技术的不断发展, 特别是开源软件生态的普及, 软件在商业、金融、医疗、电子政务、工
业制造等领域的融合日益加深. 然而, 由于软件项目自身规模和用户需求复杂度的不断增长, 其内部存在着不可避
[1]
免的缺陷 (bug) . 根据 VulDB 漏洞资料库上的统计数据显示, 仅在 2022 年 1 月–10 月 5 日期间 [2] , Google
Chromium 累计记录的安全 bug 数量达 303, 位居同类软件安全缺陷榜第 1 名, Mozilla Firefox 累计记录的安全
bug 数为 117. 目前, Chromium 项目已收到了超过 149 万个 bug 报告, Mozilla 项目已收到了超过 120 万个 bug 报
告 [3] . 因此, 软件的 bug 对政企核心数据安全保护、用户行为合规性审计、新型计算平台可靠性等方面形成了重
大威胁 [4] . 为了持续提升软件的服务性能和增强其安全性, 维护人员需要将发现的 bug 及时分派给开发人员, 以确
保 bug 得到及时修复. 因此, bug 分派已成为软件安全维护过程中关键的活动之一. 软件 bug 被记录在如图 1 所示
的 bug 报告中, 其中包含 bug ID、bug 修复状态、开发人员 ID、bug 摘要、bug 具体描述, 以及与 bug 有关的评论
等关键信息. 这些信息有助于维护人员了解 bug 的严重程度、影响范围及可能的修复群体, 从而更有效地完成
bug 分派.
图 1 一个 Google Chromium bug 报告实例
在当前的 bug 分派研究工作中, 许多方法将其视为一个文本分类问题 [3,5] . 例如, 基于规则的分派方法利用预
定义的规则 [6] , 先根据 bug 报告文本构建语义空间, 再将一个 bug 映射为一组特征向量, 并根据规则分类的结果,
将 bug 分派给具有对应标签的开发人员 [3,7−9] . 虽然这类方法很有效, 但是它们仍然存在一些不足: (1) bug 报告存
在修复记录分布不均衡性. 由于 bug 修复记录具有集群特点 [10] , 且活跃度高的开发者修复 bug 记录多, 而活跃度
低的开发者修复 bug 记录少, 导致 bug 数据集具有典型的帕累托分布. 因此, 用于分类器学习的修复记录具有潜在
的开发者-bug 关联不均衡性. (2) 分类技术忽视了对开发人员的建模. 开发者与 bug 是两个对等的实体, 但基于
bug 报告文本的分类把开发人员简单地作为一个类标签, 进行 bug 报告文本多标签分类, 这导致 bug 分派时对
bug 和开发者建模失衡, 忽视了对可以揭示开发人员专业背景、兴趣及能力等关键信息的表征. (3) 分类模型难以
捕捉 bug 与开发者的相关性. 分类模型训练时都基于一个共同的假设, 即把现实软件开发活动中密切相关的 bug
和开发人员看作两个独立的实体进行学习. 然而, 由于二者的语义向量函数缺乏对关键协作信号的显式编码, 导致
其难以准确表达隐藏在 bug-开发者交互过程中的信号. 因此, 无法充分利用它们之间相关性进行 bug 和开发人员
相似性匹配.
多模态表示学习 [11] 具有强大的机器学习能力, 能够使模型在学习多种模态数据后对目标对象进行互补性表
示, 常见的文本和视频 [12] 、文本和图像 [13] 等结合的多模态学习表示已充分证明了这一点. 此外, 特别是协同表示

