IncBL (Incremental Bug Localization) is an efficient information retrieval-based bug localization tool for evolving software repositories. It can store and update model parameters incrementally to save running time without sacrificing accuracy. IncBL is implemented as an open-source GitHub app that can analyze the issues labelled as bug and comment with the suspicious code files to remind developers.
When using IncBL, all you need to do is installing IncBL to your GitHub repositories by following this link. Once IncBL being installed, it will automatically analyze the codebases and past issues. Each time when a new issue tagged with bug is raised, IncBL updates models incrementally and localizes relevant buggy files for this issue. After files are retrieved, IncBL posts the top 10 most relevant files in the issue so developers can get notified.
It should be noted that IncBL's running time depends on the size of projects. For small repos, IncBL can return results in 5-40 seconds. But for lager code project it may need several minutes. Please be patient when waiting for the returned results.
A video demonstration of IncBL can found here.
First, fork this repository and run bash env_config.sh
to create a virtual environment and install necessary dependencies. Then, run python local.py -h
to find the usage instructions.
There are three positional arguments in IncBL:
incbl_root
: IncBL's root directorybug_report_directory
: Bug report directorycode_base_path
: Codebase directory
There are two optional argument you may care about when localizing bugs in multi-language project:
-
-ft [file_type_list]
Thefile_type_list
is to clarify the suffixes of files to be processed, in other words, they represents the programming languages. You can specify like-ft ["java", "py"]
. -
-sp storage_path
This is for storage of incremental data.
One usage example is: python local.py ./IncBL ./data/example.XML /dataset/example -ft ["java", "py"] -sp ./data
It means that:
- The bug report is
./data/example.XML
- The codebase is
/dataset/example
- IncBL will localize bug in
java
andpython
files, and save incremental data in./data
folder.
The localizing results and the Mean Average Precision (if ground truths exist) will be returned to the terminal.
We evaluate IncBL on Bugzbook dataset. On the Bugzbook dataset, IncBL can significantly reduce the running time for locating bugs in continuously evolving repositories by 77.79% (i.e., 4.5 times faster) on average compared with the original BugLocator. IncBL can also achieve a Mean Average Precision (MAP) of 0.331 – on average, the correct files appear in the top 3 locations. The dataset and detailed experimental results can be downloaded from this link. For the downloaded files:
IncBL_data
- datasets
- Bugzbook_reports ----------- The original full dataset from Bugzbook.
- cleaning_Bugzbook ---------- The clean dataset by removing non-code files in ground-truths.
- RQ1_dataset -----------------The sampled 381 reports considering a 95% confidence level and 5% interval to measure running time.
- results
- RQ1_results ------------------- Running time of IncBL and BugLocator on RQ1_dataset
- RQ2_results ------------------- Average Precision of IncBL on Bugzbook
Note that the downloaded files may only contain bug reports but no code files. You can run clone.sh
to download the corresponding repositories to get code files and run IncBL on them.
IncBL is developed by Zhou YANG, Jieke SHI, David LO and Shaowei WANG from the Singapore Management University and University of Manitoba.
If you meet any problems when using the tool, please contact Jieke SHI by jiekeshi@smu.edu.sg. Many thanks!
@inproceedings{yang2021incbl,
author = {Zhou Yang and
Jieke Shi and
Shaowei Wang and
David Lo},
title = {IncBL: Incremental Bug Localization},
booktitle = {36th {IEEE/ACM} International Conference on Automated Software Engineering,
{ASE} 2021, Melbourne, Australia, November 15-19, 2021},
pages = {1223--1226},
publisher = {{IEEE}},
year = {2021},
url = {https://doi.org/10.1109/ASE51524.2021.9678546},
doi = {10.1109/ASE51524.2021.9678546}
}