Bug Prediction in Procedural Software Systems
Introduction
This document presents the means of reproducing the work conduced in the masters degree regarding bug prediction in the procedural software system context. The work is limited to static code metrics, since change metrics and process cannot be applied to procedural software systems.
First, we compare existing bug approaches, taking in consideration the newest ones that used static source code for bug prediction. We adapted the Object-Oriented metrics to procedural software systems, and then compared the approaches using both adapted and direct applicable metrics. The best performing methods was Koru, which used Halstead, McCabe and LOC together with the Random Forests machine learning algorithm. The complete process is described in the Comparison of bug prediction approaches section.
After finding that Random Forests combined with Halstead, McCabe and LOC where the best features for bug prediction in the procedural software systems context. We proposed additional features and measured if them increased the bug prediction performance. They do. We used duplicated code, static analysers errors, compile warnings and preprocessor count in addition to Halstead, McCabe and LOC. A feature selection was performed in order to find the best sets among the features. We found that proposed code quality features improved precision without compromising recall. The procedure, complete results, and used systems are available in the Code Quality Features section.
The published work result from our research can be found on the publications.html section and the complete master dissertation is on the following link: master dissertation.



