Program Repair via Direct State Manipulation
The goal of program repair is to automatically fix programs to meet a specification. We propose a new specification mechanism, direct manipulation, in which the programmer can visualize the trace of a buggy program on a failing input and convey the intended program behavior by manipulating variable values at some location. The repair problem is to find a program that, on the same input, reaches the location identified by the programmer with variable values equal to the manipulated ones. Since a single program execution under-specifies the overall program behavior, we augment our repair problem with quantitative objectives to find the program that agrees with the specification and is closest to the original one with respect to some distance. We formalize the repair problem, build a program repair tool JDial based on the Sketch synthesizer, and show the effectiveness of JDial on representative buggy benchmarks from introductory programming assignments.
READ FULL TEXT