/SeededBugs

Seeded Bugs

Primary LanguageJava

Here are two datasets of seeded bugs used in our paper:
''ARJA: Automated Repair of Java Programs via Multi-Objective Genetic Programming''

These bugs are generated by performing the mutation to the correct version of Math85. 

The ‘’FData’’ contains 13 seeded bugs F1-F13. 
For each bug, e.g., F1, there is a folder called F1. The folder
F1 contains the following three files:
1) src: the source code of the buggy version
2) target: the binaries of the source code
3) patch.txt: a correct patch for the buggy version

The folder ‘’libs’’ contains the dependencies of each buggy program. 



The ``HData'' contains 5 seeded bugs H1-H5. The folder structure of HData
is similar to that of ``FData''.


Note that for F1-F13, the mutation is conducted to 
the redundant statements, so the redundancy-based 
repair approaches can fix the bugs F1--F5 assuming their
search ability is strong enough. So F1--F5  
can be used to compare the search ability of different 
redundancy-based repair approaches.

For H1-H3, the mutation is conducted to
the statements that do not exist in the buggy program. So
they are used to illustrate the effect of type
matching strategy presented in our paper.  


The patch (in patch.txt) is represented as a series of edits. The
following is an example:

1 Replace src/main/java/org/apache/commons/math/distribution/NormalDistributionImpl.java 216 
Faulty:
ret=-Double.MAX_VALUE;
Seed:
ret=getMean();
****************************************************************
2 Delete src/main/java/org/apache/commons/math/distribution/NormalDistributionImpl.java 138 
Faulty:
if (x < 0) {
  return 0;
}
Seed:
****************************************************************
3 InsertBefore src/main/java/org/apache/commons/math/distribution/NormalDistributionImpl.java 172 
Faulty:
if (p == 1) {
  return Double.POSITIVE_INFINITY;
}
Seed:
if (p == 0) {
  return Double.NEGATIVE_INFINITY;
}
****************************************************************


There are three edits in this patch. For each edit, this first line
contains three kinds of information: the operation types, the java file where the faulty statement locates, 
and the line number of the faulty statement in the java file. 
For example, the first edit means that replacing the faulty statement ret=-Double.MAX_VALUE; (line 216 in NormalDistributionImpl.java)
with ret=getMean();. 
The third edit means that inserting
if (p == 0) {
  return Double.NEGATIVE_INFINITY;
}
before the faulty statement (line 172 in NormalDistributionImpl.java):
if (p == 1) {
  return Double.POSITIVE_INFINITY;
}