Press "Enter" to skip to content

ClusterCommit:一种基于项目集群的实时缺陷预测方法

 

原文标题: ClusterCommit: A Just-in-Time Defect Prediction Approach Using Clusters of Projects

 

原文作者:Shehab M A, Hamou-Lhadj A, Alawneh L.

 

原文链接:https://ieeexplore.ieee.org/abstract/document/9825789

 

发表会议:SANER’ 22

 

笔记作者:zhanS@SecQuan

 

笔记小编:cherry@SecQuan

 

大多数现有的 JIT 缺陷预测技术的目标是项目内缺陷预测,而在本文中,受 Nayrolles 等人[1]的启发(Nayrolles 等人认为,对于工业项目而言,将高度耦合的不同项目的提交组合起来有助于提升 JIT 缺陷预测的性能,因为这些项目重用或共享同一个代码库,因此它们也可能出现同样的错误),作者提出了一种适用于共享公共库和功能的项目集群的模型。与现有技术不同的是,ClusterCommit 方法通过组合来自更大集群的一组项目的提交(Commit)来训练模型。这样训练的模型能够适应于更多的项目。

 

图 1 是 ClusterCommit 模型的框架。模型的输入为一组共享了一些依赖项的项目,输入可以由用户自定义。接着需要对输入的项目进行聚类以识别强耦合的各个子项目(这些子项目可能共享一个更大的代码库)。对于聚类的每一个簇,提取对应的 Commit 来训练模型。

 

Fig. 1 方法框架

 

项目聚类:对于输入的一组项目,通过依赖管理系统,如:Maven,提取每一个项目使用的库。然后构建项目依赖图(属于社区图),其中,节点是项目或者库,边是它们之间的依赖关系。注意,项目之间没有边连接,因为目标是要找到子项目之间共享的库。作者使用 LP(Label Propagation,标签传播算法)实现这一目标。

 

特征提取:表 1 是本文所提特征(除了 SEXP)。这些特征基于 Kamei 等人[2]的文章。在本文中,作者使用 Pearson 相关系数来衡量特征之间的相关性。

 

Tab. 1 特征

 

打标签:使用 Campos 等人提出的 RA-SZZ 算法来打标签。算法原理挺简单的,这里就不再赘述。

 

分类器:本文选用随机森林作为分类器。

 

模型评估:作者选择如图 2 所示的方法进行模型评估。具体来说,对于 Run 1,使用 P1 在训练时间间隔内的提交以及 P2 落在训练时间间隔内的提交作为训练集,然后使用[b, c]段的提交作为测试集,;对于 P2,使用[g, h]段的提交作为测试集;对于 P3,使用[k, l]段的提交作为测试集。P3 的所有提交都没有用于构建模型,这符合本文的思想:强耦合的项目可以用结果其他项目数据训练的模型来预测缺陷。对于 Run 2,通过移动时间窗口,进行模型的训练和测试流程。通过这种方式,模型评估能够覆盖所有的项目。

 

Fig. 2 模型评估方法

Fig. 3 数据来源

参考文献

 

[1] Nayrolles M, Hamou-Lhadj A. Clever: Combining code metrics with clone detection for just-in-time fault prevention and resolution in large industrial projects[C]//Proceedings of the 15th international conference on mining software repositories. 2018: 153-164.

 

[2] Kamei Y, Shihab E, Adams B, et al. A large-scale empirical study of just-in-time quality assurance[J]. IEEE Transactions on Software Engineering, 2012, 39(6): 757-773.

 

[3] Neto E C, Da Costa D A, Kulesza U. The impact of refactoring changes on the szz algorithm: An empirical study[C]//2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2018: 380-390.

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注