Prophet, a patch generation system that works with a set of successful human patches obtained from open-source software repositories to learn a probabilistic, application- independent model of correct code. It generates a space of candidate patches, uses the model to rank the candidate patches in order of likely correctness, and validates the ranked patches against a suite of test cases to find correct patches. Experimental results show that, on a benchmark set of real-world defects drawn from eight open-source projects, The Prophet search space contains correct patches for 19 of these 69 defects.
- Contributions: a new approach, a new set of features, a tool
- The result is not very impressive
- We manually analyze each validated patch to determine whether the patch is a correct patch or just a plausible but incorrect patch that happens to produce correct outputs for all of the inputs in the test suite.
- Generate-and-validate patch generation
- Model the interactions between code to fill in and the context
- 1) the patch checks a value that is used as a parameter in a nearby procedure call
- the patch checks a pointer that nearby code dereferences
- the patch checks a value that was recently changed by nearby code
- Abstracting away syntactical details when making features
What you can learn from this to make your research better?
Features. Model. (TBD)
Details and Problems From the presenters’ point of view, what questions might audience ask?
Train-set size: 777 from 8 repos, max (240), min (11). Test set only uses 4 of them, but excluded properly.
Dynamic analysis for defect localization
SPR search space, which uses transformation schemas, staged program repair, and condition synthesis to generate candidate patches VS random search?
We note that the applications in the training set share many characteristics with the benchmark applications on which we eval- uate Prophet. Specifically, all of these applications are open source Linux applications, written in C, that can be invoked from the command line.
- Copy & paste ALAP