Efficacy of static analysis tools for software defect detection on open-source projects

Jones Yeboah,Saheed Popoola
2024-05-21
Abstract:In software practice, static analysis tools remain an integral part of detecting defects in software and there have been various tools designed to run the analysis in different programming languages like Java, C++, and Python. This paper presents an empirical comparison of popular static analysis tools for identifying software defects using several datasets using Java, C++, and Python code. The study used popular analysis tools such as SonarQube, PMD, Checkstyle, and FindBugs to perform the comparison based on using the datasets. The study also used various evaluation metrics such as Precision, Recall, and F1-score to determine the performance of each analysis tool. The study results show that SonarQube performs considerably well than all other tools in terms of its defect detection across the various three programming languages. These findings remain consistent with other existing studies that also agree on SonarQube being an effective tool for defect detection in software. The study contributes to much insight on static analysis tools with different programming languages and additional information to understand the strengths and weaknesses of each analysis tool. The study also discusses the implications for software development researchers and practitioners, and future directions in this area. Our research approach aim is to provide a recommendation guideline to enable software developers, practitioners, and researchers to make the right choice on static analysis tools to detect errors in their software codes. Also, for researchers to embark on investigating and improving software analysis tools to enhance the quality and reliability of the software systems and its software development processes practice.
Software Engineering
What problem does this paper attempt to address?
This paper attempts to address the issue of the accuracy and effectiveness of static analysis tools in detecting software defects across different programming languages (Java, C/C++, and Python). The study evaluates the performance of four popular static analysis tools (SonarQube, FindBugs, Checkstyle, and PMD) in identifying software errors and provides insights into the strengths and weaknesses of these tools to help software developers, researchers, and practitioners choose the most suitable static analysis tool for their projects. The core research questions of the paper are as follows: 1. How accurate are different static analysis tools in identifying common software defects? 2. What are the significant differences in the capabilities of each tool in detecting software defects? By comparing these four tools, the study aims to provide a recommendation guide for software developers so that they can choose the right static analysis tool to detect errors in their code based on project requirements. Additionally, the study explores future research directions in this field.