Coder Social home page Coder Social logo

incbl's Introduction

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}
}

incbl's People

Contributors

jiekeshi avatar yangzhou6666 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.