Prophet: Automatic Patch Generation via Learning from Successful Human Patches
Fan Long, Martin Rinard · DSpace@MIT (Massachusetts Institute of Technology) · 2015
We present Prophet, a novel patch generation system that learns a probabilistic model over candidate patches from a database of past successful patches. Prophet defines the probabilistic model as the combination of a distribution over program points based on defect localization algorithms and a parameterized log-linear distribution over modification operations. It then learns the model parameters via maximum log-likelihood, which identifies important character-istics of the previous successful patches in the database. For a new defect, Prophet generates a search space that contains many can-didate patches, applies the learned model to prioritize those poten-tially correct patches that are consistent with the identified success-ful patch characteristics, and then validates the candidate patches with a user supplied test suite. The experimental results indicate that these techniques enable Prophet to generate correct patches for 15 out of 69 real-world defects in eight open source projects. The previous state of the art generate and validate system, which uses a set of hand-code heuristics to prioritize the search, generates cor-rect patches for 11 of these same 69 defects. 1.