Page 167 - 《软件学报》2025年第10期
P. 167
4564 软件学报 2025 年第 36 卷第 10 期
模型 [47] . 实验结果表明 CC2Vec 获得了最先进的即时缺陷预测性能. 最近, Zeng 等人 [48] 在大规模数据集上实证比
较了 DeepJIT、CC2Vec 和传统的即时缺陷预测模型, 他们发现 CC2Vec 并不能始终优于 DeepJIT, 也不能总优于
传统的即时缺陷预测模型. 于是他们提出一种基于增加的代码行特征的即时缺陷预测方法, 称为 LApredict. 结果
表明, 在项目内与跨项目场景下, LApredict 的有效性和效率都大大优于基于深度学习的模型.
在即时缺陷预测技术可解释性方面, Pornprasit 等人 [49] 将局部可解释技术 LIME 用于即时缺陷预测中, 提出一
种 JITLine 方法用于代码变更及相关联的代码行的预测与解释. 随后, Pornprasit 等人 [50] 提出一种基于局部规则的
模型无关可解释算法, 命名为 PyExplainer, 用于生成即时缺陷预测模型的解释. 与 LIME 相比, PyExplainer 在相似
度、局部模型精度、解释唯一性、与实际特征一致性等方面都有所提高. Lin 等人 [51] 对跨项目即时缺陷预测模型
进行可解释性研究, 在 20 个开源项目上实验, 他们发现使用单个项目构建的模型其解释因项目而异, 不考虑项目
级差异 (即全局模型) 的情况下, 从多个项目的混合数据池中训练的模型无法捕获项目级差异. 相反, 考虑项目级
差异时该模型能够获得更好的解释, 并且不会牺牲性能, 特别是考虑项目的上下文时. Zheng 等人 [52] 使用随机森林
建立即时缺陷预测模型, 并使用 LIME 进行解释. 结果表明, 通过这种方法可以达到原工作效果的 96%, 并减少开
发人员 45% 的工作量. 陈丽琼等人 [53] 将 SHAP 技术用于即时缺陷预测, 他们首先使用 SHAP 分析初始数据集特
征, 根据结果对数据集进行特征选择. 然后利用 SMOTEENN 算法对类不平衡数据进行正负实例均衡化, 并使用集
成学习算法 XGBoost 进行建模. 最后采用 SHAP 对预测结果进行可解释性分析. Yang 等人 [54] 实证评价了 LIME、
BreakDown 和 SHAP 这 3 种模型无关技术对于即时缺陷预测结果的解释. 在 6 个开源项目上的结果表明不同的变
更有着不同的解释, 两个随机变更的度量元排序差异平均为 3. 对于一个给定的软件项目, 不同解释技术产生的
top-1 度量元排名具有很高的一致性, 然而其 top-3 度量元排名却具有较低的一致性. 在实际开发过程中, 他们建议
使用模型无关解释技术来帮助开发人员更好地理解模型的预测结果.
此外, Pascarella 等人 [55] 对变更级缺陷粒度进行了研究, 有缺陷的提交通常由有缺陷和无缺陷的文件组成, 他
们提出了更细粒度的文件级即时缺陷预测模型. 在 10 个开源项目上, 实验结果表明他们的模型可以获得更高的
AUC 分数. Cabral 等人 [56] 考虑到即时缺陷预测的类不平衡性, 选择了 10 个 GitHub 开源项目进行研究, 结果表明
他们的模型比基线模型在 G-mean 指标上表现得更好. 关于即时软件缺陷预测技术的最新研究进展, 具体可参考
文献 [3,57]. 然而, 与此不同, 本文重点关注错误标注的变更对移动 APP 即时缺陷预测性能与解释的影响.
1.3 移动 APP 即时缺陷预测
Scandariato 等人 [58] 首次研究基于移动 APP 的缺陷预测, 他们选择一个大型移动 APP 的 5 个版本进行实验,
利用支持向量机分类器在类层次上预测 APP 是否存在缺陷. Kaur 等人 [59] 的研究指出, 基于开发过程度量元的缺
陷预测模型比基于移动 APP 的代码复杂性度量元具有更好的性能. Malhotra [60] 使用 7 个移动 APP 构建了 18 个分
类模型, 结果表明所建立模型之间的性能差异较大, 并且基于支持向量机的模型性能最差. Ricky 等人 [61] 指出, 在
移动 APP 缺陷预测方面, 支持向量机比决策树的性能更佳. 此外, 一些研究利用日志文件和抽象语法树 (abstract
syntax trees, AST) [62] 来提取高频关键词, 并用于识别移动应用程序中含有缺陷的代码. 上述文献主要侧重于类层次
上的 APP 缺陷预测, Catolino 等人 [17] 的研究表明, 变更层次更适用于移动 APP 缺陷预测.
Zhao 等人 [43] 提出了一种名为 simplified deep forest (SDF) 的方法, 用于移动 APP 即时缺陷预测. 该模型集成
了传统森林的广度和深度特点, 形成了一个具有级联结构的森林模型. 在 10 个移动 APP 上进行实验, 结果表明
SDF 在 F-measure, MCC 以及 AUC 这 3 个性能指标上的表现明显优于基线模型. 为缓解类不平衡问题对预测模型
的影响, Zhao 等人 [44] 提出了一种工作量感知即时缺陷预测模型—KPIDL. 该模型首先利用核主成分分析技术对原
始数据进行预处理, 以获得更好的特征表示. 接着, 在深度神经网络中引入一种基于代价敏感的交叉熵损失函数,
通过考虑两类的先验概率来缓解类不平衡问题. 在 15 个移动 APP 上的实验结果表明, 相比于 25 种基线方法, 在
大多数情况下, KPIDL 在 2 个工作量感知指标上的表现更为优异. 同样地, Cheng 等人 [63] 提出一种名为 KAL 的跨
项目即时缺陷预测方法, 他们首先使用核主成分分析技术预处理原始数据, 然后使用深度对抗模型学习深度特征
表示. 在 14 个移动 APP 上进行实验, 结果表明 KAL 的性能优于 20 种基线模型. Xu 等人 [42] 使用 19 个移动 APP

