基于代码度量历史的深度学习反模式检测
软件工程
2019-10-18 v1
摘要
反模式是针对反复出现的设计问题的劣质解决方案。大量实证研究已强调反模式对软件维护的负面影响,这推动了各种检测技术的发展。现有方法大多依赖软件系统的结构度量来识别受影响的组件,而另一些方法则通过分析代码组件之间发生的共同变更来利用历史信息。由于仅依赖软件系统的一个方面(即结构或历史),现有方法会遗漏一些宝贵信息,从而限制了其性能。在本文中,我们提出了 CAME(代码度量演化的卷积分析),这是一种基于深度学习的方法,它同时依赖结构信息和历史信息来检测反模式。我们的方法利用从版本控制系统挖掘出的结构代码度量历史值,并使用卷积神经网络分类器从这些信息中推断反模式的存在。我们针对广为人知的 God Class 反模式进行了实验,并在三个软件系统上评估了其性能。通过研究结果,我们表明:(1)使用源代码度量的历史值可以提高精确率;(2)CAME 优于现有的静态机器学习分类器;(3)CAME 优于现有的检测工具。
引用
@article{arxiv.1910.07658,
title = {Deep Learning Anti-patterns from Code Metrics History},
author = {Antoine Barbez and Foutse Khomh and Yann-Gaël Guéhéneuc},
journal= {arXiv preprint arXiv:1910.07658},
year = {2019}
}
备注
Preprint. Paper accepted for inclusion in the Research Track of the 35th IEEE International Conference on Software Maintenance and Evolution (ICSME 2019), Cleveland, Ohio, USA