Skip to content
jordanell edited this page Jul 3, 2012 · 6 revisions

The overall goal of the Fix Inducing Changes project is to determine what commits to a Git repository cause bugs inside of the project. We can accomplish this by having access to a project's Git repository as well as its communication information. Communication information can come from three supported types: Bugzilla, Jira or email archives.

This project is based off of the paper When Do Changes Induce Fixes? by Sliwerski, Zimmermann and Zeller. The paper can be found here. Their project lays the foundation for some specific cases of finding fix inducing changes, however, this project takes these foundations and turns it into more of a project independent and general system.

Setup

In order to use this project, two other projects by eggnet need to be used.

First is the scm2pgsql project. This project requires direct access to the git repository of the project you wish to find bugs in. All information regarding scm2pgsql can be found in its wiki. The result of running scm2pgsql will be a database which has the same name as the git repository. This database will be used to gather information about commits from the project.

Second is the com2pgsql project. This project takes all of the communication information supplied by the project and converts it into a standard database form. All the information regarding running com2pgsql can be found in its wiki.

Run

The Fix Inducing Changes project will need three parameters passed to it. The first parameter is the name of the database created by the scm2pgsql project described above. The second is the branch name you wish to identify bugs on and the third is the name of the database created by com2pgsql as described above.

Given these input parameters, this program will attempt to determine any commits in the given branch which have caused bugs throughout a project's life.

The algorithm that is used for determining bugs can be found here.

Results

The result of this program is an additional table inside the database created by scm2pgsql. The table contains records which explain which commits were found to be bugs and which commits were believed to be fixes for those bugs. The schema for this additional table can be found here.

Clone this wiki locally