CombineFL is an infrastructure for evaluating and combining fault localization techniques for developers and researches.
1. Download the tool CombineFL-v0.1.tar.gz
2. Unzip the TAR file:
$ tar czvf CombineFL-v0.1.tar.gz
1 Combine techniques and Generate SVMRank file
$ cd combinefl $ python 1-combine.py
2 Split file for k-fold validation:
$ ./2-split.sh
3. Train and Predict in each fold:
$ ./3-crossvalidation.sh
4. Calculate the metrics:
$ python 4-calc-metric.py
1 Combine techniques and Generate SVMRank file
$ cd combinefl $ python 1-combine.py -f <add-in-file-path>
2 Split file for k-fold validation:
$ ./2-split.sh
3. Train and Predict in each fold:
$ ./3-crossvalidation.sh
4. Calculate the metrics:
$ python 4-calc-metric.py
Standard JSON format.
For each fault in Defects4J dataset, use the project name and number. Format: <project><fault_number> Example: 'math1', 'time15'
For each suspicious statement, use the classname and line number. Such as: Format: <classname>:<linenumber> Example: 'com.google.javascript.rhino.Node:393'
For suspicious score, use a float in range (0, 1). Format: <method_name>: <score>
An add-in file example:
{
"math1": {
"org.apache.commons.math3.exception.util.LocalizedFormats:95": {
"new_method1": 0.2,
"new_method2": 0.5
},
"org.apache.commoms.math3.fraction.BigFraction:90": {
"new_method1": 0.6,
"new_method2": 0.1
}
},
"time8": {
"org.joda.time.tz.ZoneInfoProvider:201": {
"new_method1": 0.1,
"new_method2": 0.3
}
}
}
More detailed information is available in README file.