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
   162   163   164   165   166   167   168   169   170   171   172