Fault Prediction based on Software Metrics and SonarQube Rules. Machine or Deep Learning?
Francesco Lomio, Sergio Moreschini, Valentina Lenarduzzi

TL;DR
This study compares machine learning and deep learning approaches for fault prediction in Java projects using SonarQube metrics and rules, highlighting deep learning's superior accuracy and identifying key fault-prone rules.
Contribution
It advances fault prediction by analyzing the contribution of SonarQube rules and metrics using deep learning, providing insights into rule importance and fault-proneness.
Findings
Deep learning outperforms machine learning in fault detection accuracy.
14 rules account for 30% of fault-proneness importance.
Most rules have negligible impact on fault-proneness.
Abstract
Background. Developers spend more time fixing bugs and refactoring the code to increase the maintainability than developing new features. Researchers investigated the code quality impact on fault-proneness focusing on code smells and code metrics. Objective. We aim at advancing fault-inducing commit prediction based on SonarQube considering the contribution provided by each rule and metric. Method. We designed and conducted a case study among 33 Java projects analyzed with SonarQube and SZZ to identify fault-inducing and fault-fixing commits. Moreover, we investigated fault-proneness of each SonarQube rule and metric using Machine and Deep Learning models. Results. We analyzed 77,932 commits that contain 40,890 faults and infected by more than 174 SonarQube rules violated 1,9M times, on which there was calculated 24 software metrics available by the tool. Compared to machine learning…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Reliability and Analysis Research · Software Testing and Debugging Techniques
