一种基于机器学习的反模式检测集成方法
软件工程
2019-10-18 v3 机器学习
摘要
反模式是针对反复出现的设计问题的拙劣解决方案。若干实证研究已强调其对程序理解、可维护性以及易错性的负面影响。人们提出了多种检测方法来识别源代码中它们的出现。然而,这些方法只能识别出其中一部分出现,并报告大量的误报与漏报。此外,不同方法之间通常观察到较低的一致性。近期研究显示了机器学习模型改善此状况的潜力。然而,此类算法需要大量人工生成的训练数据,这常常限制其在实践中的应用。本文中,我们提出 SMAD(SMart Aggregation of Anti-patterns Detectors,反模式检测器的智能聚合),一种基于机器学习的集成方法,依据各类反模式检测方法内部的检测规则对其进行聚合。因此,我们的方法利用若干检测工具,从合理数量的训练样本中产生改进的预测。我们实现了 SMAD 用于检测两种知名反模式:God Class(上帝类)与 Feature Envy(特性嫉妒)。基于在八个 Java 项目上进行的实验结果,我们表明:(1) 我们的方法明显改进了所聚合的工具;(2) SMAD 显著优于其他集成方法。
引用
@article{arxiv.1903.01899,
title = {A Machine-learning Based Ensemble Method For Anti-patterns Detection},
author = {Antoine Barbez and Foutse Khomh and Yann-Gaël Guéhéneuc},
journal= {arXiv preprint arXiv:1903.01899},
year = {2019}
}
备注
Preprint Submitted to Journal of Systems and Software, Elsevier