Page 178 - 《软件学报》2025年第10期
P. 178
李志强 等: SZZ 误标变更对移动 APP 即时缺陷预测性能和解释的影响 4575
型得分与 RA 模型一致.
SKESD 统计测试结果表明, 在 AUC 方面, 随机森林分类器获得了最优的性能, 并且 B、AG、MA 和 RA 模型
的性能依次递增, 符合 4 种 SZZ 算法间的递进关系. 结合表 6 中的数据来看, 随机森林上的结果普遍高于其他 2
种分类器, 使用朴素贝叶斯和逻辑回归分类器会造成得分显著降低. 在 MCC 指标上, 随机森林获得了最优的性能,
除 RA-SZZ 模型之外, 其他 3 种 SZZ 模型的性能基本一致. 在 G-mean 指标上, 随机森林分类器仍获得了最优的性
能, 但是 RA 模型的表现显著低于其他 3 种 SZZ 模型. 在工作量感知指标方面, 随机森林分类器在 F-measure@20%
指标上整体获得了最优的性能, 同时符合 4 种 SZZ 算法之间的递进关系. 此外, 朴素贝叶斯在 IFA 指标上整体获
得了最优的性能, 虽然在随机森林模型上的性能较差, 但结合图 4 来看, 各模型的性能差距并不显著.
RQ3: SZZ 错误标注的变更是否影响类不平衡下的移动 APP 即时缺陷预测模型的解释?
研究动机: 先前的工作在即时缺陷预测模型可解释性方面进行了探究 [50−53] , 通过评估软件度量元对于模
型预测的贡献度, 帮助人们理解模型的决策过程, 并解释模型的预测结果, 从而更好地指导开发人员修复已有
的缺陷或避免引入新的缺陷. 然而, 不同 SZZ 算法标注的数据对移动 APP 即时缺陷预测模型解释的影响尚未
可知. 因此在 RQ3 中, 本文研究 SZZ 错误标注的变更在类不平衡情况下对移动 APP 即时缺陷预测模型解释的
影响.
研究方法: 先前的研究 [7,31,50] 表明随机森林分类器在即时缺陷预测模型中效果表现最为出色, 结合本文的实验
结果与该结论基本一致, 因此在 RQ3 与 RQ4 中, 本文对使用随机森林分类器构建的模型进行解释, 在类不平衡场
景下, 对于每一个移动 APP 项目, 本文首先采用 B-SZZ、AG-SZZ、MA-SZZ 和 RA-SZZ 标注的数据构建随机森
林模型, 接着使用 SHAP 框架对预测结果进行解释, 每种数据标注算法对应一组 SHAP 解释结果, 再整合每种标注
算法对应的所有项目的解释结果, 最后对比 B-SZZ、AG-SZZ、MA-SZZ 与 RA-SZZ 在所有项目上的解释差异, 并
重点关注对模型预测结果的影响程度排名前 3 的度量元. 本文将分别从全局和局部的角度对模型预测结果进行可
解释分析, 全局解释可以对整个模型的预测结果进行统计, 给出全局上的结果, 揭示每个度量元的作用和重要性排
名, 从而可以将有重要影响的度量元反馈给开发者, 有针对性的优化代码质量. 通过局部解释, 可以揭示在单个代
码变更上的模型决策, 得到更加细节的度量元贡献方向与大小, 方便开发者更加清晰地理解分类模型在单个代码
变更上的决策. 下面介绍具体实现方法.
(1) 如图 2 所示, 对于所有项目的每一个 SZZ 标注算法, 使用基于时间序列划分的训练集构建模型, 并使用 SHAP
框架计算每个度量元对应的 SHAP 值, 得到一次划分训练集的 SHAP 值.
(2) 整合每个项目的每一次划分的训练集所对应的 SHAP 值, 并对整个模型进行解释.
(3) 重复步骤 (1)、(2), 使用 SHAP 框架对每个项目的所有 SZZ 模型进行解释.
实验结果: 在全局解释方面, 图 5 展示了使用 SHAP 框架对所有项目的 B-SZZ、AG-SZZ、MA-SZZ 和 RA-
SZZ 即时缺陷预测模型的全局解释, 左侧纵坐标表示度量元的重要性程度, 排名越高表示其影响越大; 右侧纵坐标
表示度量元的数值大小, 其值越大越偏向红色, 其值越小越偏向蓝色; 横坐标表示度量元对模型预测的影响方向和
程度, 若度量元的 SHAP 值为正数, 则表示对模型的预测有正向影响, 正向即预测为有缺陷, 值越大则影响程度越
大, 反之亦然. 基于以上观察, 可以得出以下结论.
(1) 如图 5 所示, la 的数值越大, 模型将变更预测为有缺陷的概率越大, 其数值越小, 模型将变更预测为无缺陷
的概率越大, 这表明 la 在缺陷预测中有重要影响, 增加的代码行数越多, 越容易产生缺陷, 与实际软件开发情况比
较相符.
(2) 从图 5 可以看出, 对于 RA-SZZ, 影响程度最大的 3 个度量元为 nuc、la 和 sexp, 其分别表示修改过的变更
数量、增加的代码行数和开发者已提交变更中影响到该变更相关子系统的数量. 对于 AG-SZZ 和 MA-SZZ, la、
sexp 和 lt 是最具影响力的度量元, lt 表示变更前的代码行数. 对于 B-SZZ, la、sexp 和 ld 是最具影响力的度量元,
ld 表示变更所删除的代码行数.
(3) 相较于 RA-SZZ 模型, nuc 在 B-SZZ、AG-SZZ 和 MA-SZZ 模型的预测结果上的影响程度显著下降, 而 la

