SonarQube 规则会引入缺陷吗?
软件工程
2019-12-20 v2
摘要
背景。分析技术债务的工具日益流行,尤其是 SonarQube 的流行度迅速上升。SonarQube 提出了一组编码规则,代表代码中即将体现为故障或增加维护成本的问题。然而,我们本地公司对 SonarQube 所提规则的实用性缺乏信心,并委托我们调查这些规则的易缺陷性。目标。本工作旨在理解哪些 SonarQube 规则确实易引入缺陷,并理解可采用哪些机器学习模型来准确识别易缺陷规则。方法。我们在 21 个知名成熟开源项目上设计并实施了实证研究。我们应用 SZZ 算法标注引入缺陷的提交。我们通过比较七种机器学习模型的分类能力来分析易缺陷性。结果。在 SonarQube 为 Java 定义的 202 条规则中,仅 25 条可被认为具有相对较低的易缺陷性。此外,被 SonarQube 视为“bug”的违规通常并不易引入缺陷,因此 SonarQube 所提模型的缺陷预测能力极低。结论。SonarQube 用于计算技术债务的规则应被彻底调查,其危害性需进一步确认。因此,公司应谨慎考虑真正需要应用哪些规则,尤其当其目的是降低易缺陷性时。
引用
@article{arxiv.1907.00376,
title = {Are SonarQube Rules Inducing Bugs?},
author = {Valentina Lenarduzzi and Francesco Lomio and Heikki Huttunen and Davide Taibi},
journal= {arXiv preprint arXiv:1907.00376},
year = {2019}
}