On the Rise and Fall of Simple Stupid Bugs: a Life-Cycle Analysis of SStuBs
Bug detection and prevention is one of the most important goals of software quality assurance. Nowadays, lots of the major problems faced by developers can be detected or even fixed fully or partially with automatic tools. However, recent works explored that there exists a substantial amount of simple, yet very annoying errors in code-bases, which are easy to fix, but hard to detect as they do not hinder the functionality of the given product in a major way. Programmers introduce such errors accidentally mostly due to inattention.
Using the ManySStuBs4J dataset, which contains a large number of such simple, stupid bugs, we investigated the history of such bugs. We were interested in properties like, how long do such bugs stay unnoticed in code-bases, whether they are typically fixed by the same developer who introduced them, or are they introduced with the addition of new code or caused more by careless modification of existing code? We found that most of such stupid bugs lurk in the code for a long time before they get removed, and that most of them are not fixed by the developer who introduced them. Examining the life-cycle of such bugs allows us to better understand their nature and adjust our development processes and quality assurance methods to better support avoiding them.