基于软件度量与 SonarQube 规则的故障预测:机器学习还是深度学习?
软件工程
2021-03-23 v1
摘要
背景。开发者花费在修复缺陷和重构代码以提升可维护性上的时间多于开发新功能。研究者探讨了代码质量对故障倾向的影响,聚焦于代码坏味与代码度量。目标。我们旨在基于 SonarQube 推进故障诱发提交预测,考虑每条规则与度量所贡献的作用。方法。我们设计并开展了一项案例研究,在 33 个 Java 项目中使用 SonarQube 与 SZZ 进行分析,以识别故障诱发与故障修复提交。此外,我们使用机器学习和深度学习模型研究了各 SonarQube 规则与度量的故障倾向。结果。我们分析了 77,932 个提交,其中包含 40,890 个故障,并受到超过 174 条 SonarQube 规则的影响(违规 1.9M 次),在此基础上计算了工具所提供的 24 个软件度量。与机器学习模型相比,深度学习提供了更准确的故障检测精度,并使我们能准确识别每条 SonarQube 规则的故障预测能力。结果显示,174 条违规规则中有十四条的重要性高于 1%,占总故障倾向重要性的 30%,而其余 165 条规则的故障倾向可忽略不计。结论。未来工作可考虑采用时间序列分析与异常检测技术,以更好且更准确地检测影响故障倾向的规则。
引用
@article{arxiv.2103.11321,
title = {Fault Prediction based on Software Metrics and SonarQube Rules. Machine or Deep Learning?},
author = {Francesco Lomio and Sergio Moreschini and Valentina Lenarduzzi},
journal= {arXiv preprint arXiv:2103.11321},
year = {2021}
}