Toward better evolutionary program repair: An integrated approach

Yuan Yuan, Wolfgang Banzhaf

Research output: Contribution to journalArticlepeer-review

42 Scopus citations

Abstract

Bug repair is a major component of software maintenance, which requires a huge amount of manpower. Evolutionary computation, particularly genetic programming (GP), is a class of promising techniques for automating this time-consuming and expensive process. Although recent research in evolutionary program repair has made significant progress, major challenges still remain. In this article, we propose ARJA-e, a new evolutionary repair system for Java code that aims to address challenges for the search space, search algorithm, and patch overfitting. To determine a search space that is more likely to contain correct patches, ARJA-e combines two sources of fix ingredients (i.e., the statement-level redundancy assumption and repair templates) with contextual analysis-based search space reduction, thereby leveraging their complementary strengths. To encode patches in GP more properly, ARJA-e unifies the edits at different granularities into statement-level edits and then uses a lower-granularity patch representation that is characterized by the decoupling of statements for replacement and statements for insertion. ARJA-e also uses a finer-grained fitness function that canmake full use of semantic information contained in the test suite, which is expected to better guide the search of GP. To alleviate patch overfitting, ARJA-e further includes a postprocessing tool that can serve the purposes of overfit detection and patch ranking.We evaluate ARJA-e on 224 real Java bugs from Defects4J and compare it with the state-of-the-art repair techniques. The evaluation results show that ARJA-e can correctly fix 39 bugs in terms of the patches ranked first, achieving substantial performance improvements over the state of the art. In addition, we analyze the effect of the components of ARJA-e qualitatively and quantitatively to demonstrate their effectiveness and advantages.

Original languageEnglish
Article number3360004
JournalACM Transactions on Software Engineering and Methodology
Volume29
Issue number1
DOIs
StatePublished - 25 Jan 2020
Externally publishedYes

Keywords

  • Evolutionary computation
  • Genetic improvement
  • Genetic programming
  • Program repair

Fingerprint

Dive into the research topics of 'Toward better evolutionary program repair: An integrated approach'. Together they form a unique fingerprint.

Cite this