Estimating the Potential of Program Repair Search Spaces with Commit Analysis
arXiv:2007.06986 · doi:10.1016/j.jss.2022.111263
Abstract
The most natural method for evaluating program repair systems is to run them on bug datasets, such as Defects4J. Yet, using this evaluation technique on arbitrary real-world programs requires heavy configuration. In this paper, we propose a purely static method to evaluate the potential of the search space of repair approaches. This new method enables researchers and practitioners to encode the search spaces of repair approaches and select potentially useful ones without struggling with tool configuration and execution. We encode the search spaces by specifying the repair strategies they employ. Next, we use the specifications to check whether past commits lie in repair search spaces. For a repair approach, including many human-written past commits in its search space indicates its potential to generate useful patches. We implement our evaluation method in LighteR. LighteR gets a Git repository and outputs a list of commits whose source code changes lie in repair search spaces. We run LighteR on 55,309 commits from the history of 72 Github repositories with and show that LighteR's precision and recall are 77% and 92%, respectively. Overall, our experiments show that our novel method is both lightweight and effective to study the search space of program repair approaches.
References in corpus (21)
- Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
- Automatic Software Repair: a Bibliography
- TBar: Revisiting Template-based Automated Program Repair
- Automatic Repair of Real Bugs in Java: A Large-Scale Experiment on the Defects4J Dataset
- Elixir: Effective object-oriented program repair
- Sorting and Transforming Program Repair Ingredients via Deep Learning Code Similarities
- Identifying Patch Correctness in Test-Based Program Repair
- Mining Software Repair Models for Reasoning on the Search Space of Automated Program Fixing
- On the Efficiency of Test Suite based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs
- Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
- Dynamic Patch Generation for Null Pointer Exceptions using Metaprogramming
- Ultra-Large Repair Search Space with Automatically Mined Templates: the Cardumen Mode of Astor
- Do the Fix Ingredients Already Exist? An Empirical Inquiry into the Redundancy Assumptions of Program Repair Approaches
- Automated Classification of Overfitting Patches with Statically Extracted Code Features
- Automated Patch Assessment for Program Repair at Scale
- Generating Mock Skeletons for Lightweight Web-Service Testing
- Astor: Exploring the Design Space of Generate-and-Validate Program Repair beyond GenProg
- NPEFix: Automatic Runtime Repair of Null Pointer Exceptions in Java
- ARJA: Automated Repair of Java Programs via Multi-Objective Genetic Programming
- Towards an automated approach for bug fix pattern detection
- Towards a Benchmark Set for Program Repair Based on Partial Fixes