We perform the APR tool selection process based on the existing APR tools from program-repair.org.
Inclusion criteria:
- applicable for Java program repair
- publicly available
- not aimed at repairing only specific types of faults, e.g., concurrency
- unrestricted repair scopes/operators (e.g., not limited to only repairing conditional statements)
- not built exclusively for existing benchmarks (e.g., Defects4J)
- use a redundancy-based approach, (i.e., able to use existing code as repair ingredients)
- executable without compilation errors (or errors solvable with reasonable efforts)
| Tool | I1 | I2 | I3 | I4 | I5 | I6 | I7 |
|---|---|---|---|---|---|---|---|
| ACS | ✅ | ❌ | |||||
| ARJA | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| AVATAR | ✅ | ❌ | ❌ | ||||
| jGenProg2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| jKali | ✅ | ❌ | |||||
| jMutRepair | ✅ | ❌ | |||||
| Cardumen | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| DeepRepair | ✅ | ❌ | |||||
| CapGen | ✅ | ❌ | |||||
| ConFix | ✅ | ❌ | |||||
| GenPat | ✅ | ❌ | |||||
| Genesis | ✅ | ❌ | |||||
| HIPPODROME | ✅ | ❌ | |||||
| HistoricalFix | ✅ | ❌ | |||||
| JAID | ✅ | ❌ | |||||
| JFix | ✅ | ❌ | ❌ | ❌ | |||
| JaRFly | ✅ | ❌ | |||||
| LSRepair | ✅ | ❌ | ❌ | ||||
| NPEFix | ✅ | ❌ | |||||
| Nopol | ✅ | ❌ | |||||
| QACrashFix | ✅ | ❌ | |||||
| Repairnator | ✅ | ❌ | |||||
| SimFix | ✅ | ❌ | |||||
| SketchFix | ✅ | ❌ | |||||
| TBar | ✅ | ❌ | |||||
| kGenProg | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| kPAR | ✅ | ❌ | |||||
| ssFix | ✅ | ❌ |