E-APR: Mapping the Effectiveness of Automated Program Repair

02/10/2020
by   Aldeida Aleti, et al.
0

Automated Program Repair (APR) is a fast growing area with many new techniques being developed to tackle one of the most challenging software engineering problems. APR techniques have shown promising results, giving us hope that one day it will be possible for software to repair itself. Existing techniques, however, are only effective at repairing certain kinds of bugs. For example, prior studies have shown that the effectiveness of APR techniques is correlated with bug complexity, with most techniques producing patches for easy bugs. This is a useful explanation that can help researchers improve APR techniques. In this paper, we extend these explanations towards a more granular level, with the aim of assessing the strengths and weaknesses of existing APR techniques. To this end, we introduce e-APR, which is a new framework for explaining the effectiveness of APR techniques. E-APR takes as input a set of buggy programs, their features and a set of APR techniques, and generates the footprints of APR techniques, i.e., the regions of the instance space of buggy programs in which good performance is expected from each technique. In this paper, we consider features of the whole program, such as the number of methods and the depth of the inheritance tree, and more specific features of the buggy part of the program, such as the number of Boolean operators in an if statement. The e-APR framework performs machine learning and dimensionality reduction over the feature space to identify the most significant features that have an impact on the effectiveness of APR. The footprints of APR techniques are presented both in a visual and numerical way, which enables us to determine their strengths and weaknesses and how different the APR techniques are from each-other. Finally, e-APR could be integrated to repair infrastructures and repair bots to choose, given a buggy program, the most suitable APR tool.

READ FULL TEXT
research
03/11/2019

Revisiting ssFix for Better Program Repair

A branch of automated program repair (APR) techniques look at finding an...
research
11/07/2022

Towards Extending the Range of Bugs That Automated Program Repair Can Handle

Modern automated program repair (APR) is well-tuned to finding and repai...
research
01/20/2023

An Analysis of the Automatic Bug Fixing Performance of ChatGPT

To support software developers in finding and fixing software bugs, seve...
research
12/21/2021

Elixir: Effective object-oriented program repair

This work is motivated by the pervasive use of method invocations in obj...
research
10/30/2018

Multi-Location Program Repair Strategies Learned from Past Successful Experience

Automated program repair (APR) has great potential to reduce the effort ...
research
09/15/2023

Practical Program Repair via Preference-based Ensemble Strategy

To date, over 40 Automated Program Repair (APR) tools have been designed...
research
12/21/2022

Improving Automated Program Repair with Domain Adaptation

Automated Program Repair (APR) is defined as the process of fixing a bug...

Please sign up or login with your details

Forgot password? Click here to reset