Supervised Bug Reports Classification for More Accurate Software Defect Localization

In software development, software teams receive bug reports that describe unintended performance of the software products frequently. When a new bug report is received, software developers usually need to recreate the bug, perform code reviews, and use various test cases to determine its root cause. This manual process can be tedious and is often extremely time consuming. In order to help lessen software developers non-autonomous attempts at locating a software bug, this thesis offers an autonomous approach to locating software bugs in source code files. This is done through measuring the text similarity between the bug report and every source code file for ranking. The top ranked source code files will be recommended as relevant to the bug report. Ranking all source files with respect to how likely they are to contain the cause of the bug would allow developers to focus their search and hence improve productivity. To further improve a systems accuracy, this thesis introduces the application of a pre-filtering technique to filter out bug reports that have been proven to be difficult for autonomous systems to process. When a bug report is received, we first classify it as either “predictable” or “unpredictable” and perform bug locating recommendation only on ”predictable” reports. Such pre-filtering is done by using a Convolutional Neural Network (CNN). CNN have never been used before in the field of bug finding, so this is a first attempt to determine if it is a viable approach. The neural network is used to represent every bug report as a vector of real numbers called features. Softmax regression is used in classifying the vector representations of bug reports. The training dataset contains previously fixed bug reports manually labeled into two categories: predictable and unpredictable. By being able to determine that a buggy file is predictable, software developers will be able to reduce the amount of false positives they come across using the software defect localization tool. To evaluate the proposed approach, we conduct an experiment on more than 3,000 Eclipse bug reports. According to the experimental result, when we look at the top ten ranked source code files in the ranked list, we made correct recommendations on 57% of predictable bug reports, increasing the overall tools accuracy by 10%. Although it is possible that there are predictable bug reports within the bug reports classified as ”unpredictable”, we do not test them. It does not make sense to run such experiments because the assumption is that ”unpredictable” reports do not contain sufficient information. Even with a effort loss of 38% of the classification result, we still improve the ranking performance. We also increase the accuracy 5% in the current leading ranking model [40] and show that the classification model is applicable to other ranking models. The experimental results show that the proposed supervised bug report classification approach can improve the bug localization ranking precision so that the ranking system is more trustworthy.