DynaMoth: Dynamic Code Synthesis for Automatic Program Repair

Author(s): Thomas Durieux & Martin Monperrus
Venue: 2016 11th IEEE/ACM International Workshop in Automation of Software Test
Date: 5/14/2016

Type of Experiement: Controlled Experiment
Data Collection Method: Observation


This paper presents a new code synthesis engine for Nopol, a repair system that repairs Java code. They describe Nopol uses their own sysnthesis engine called SMTSynth, which is capable to automatically repair two classes of Java bugs: buggy if conditions and missing preconditions. This is a limitation to Nopol as it is not able to fix bugs that are presented with methods calls. This team designed DynaMoth, which is able to repair bugs that have never been repaired automatically before.

In order to test their new system they used a dataset of known Java bugs, called Defects4J, that could occur. From this dataset they ran DynaMoth and recorded how many bugs it was able to fix compared to using SMTSynth. From the Defects4J dataset, DynaMoth was able to fix 27 of the 224 bugs presented, while SMTSynth was able to fix 35 of 224 bugs. However their new system was able to fix less bugs, they were able to fix 8 new bugs that SMTSynth was not able to fix, with 19 of the bugs fixes being overlap from the two systems. They consider these 8 new bug fixes that were never able to be fixed before as encouraging and wish to continue the development to implement additional optimizations.