Skip to content

soarsmu/IncBL

Repository files navigation

Install App

What is IncBL?

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.

How to use IncBL app?

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.

How to customize and run IncBL locally?

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 directory
  • bug_report_directory: Bug report directory
  • code_base_path: Codebase directory

There are two optional argument you may care about when localizing bugs in multi-language project:

  • -ft [file_type_list] The file_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 and python 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.

Evaluation Results

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.

Who develops IncBL?

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 [email protected]. 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}
}