Loading...
Citations
Altmetric:
Abstract
Software developers spend significant time and effort fixing bugs. Automatic program repair promises to significantly reduce bug-fixing costs. Program repair requires: fault localization — identifying program elements that cause the bug, patch generation — identifying modifications to those program elements to attempt to repair the bug, and patch validation — verifying that the modification actually repairs the bug. Most automatic program repair techniques use the developer-written tests for the repair process and produce seemingly good patches for 11–19% of the bugs in real-world software. However, most of these patches are not correct, as they overfit to the developer-written tests and break undertested functionality. The goal of this dissertation is to address this patch overfitting problem. We improve automatic program repair techniques by augmenting developer tests with additional constraints from natural language software artifacts. While most existing techniques ignore such artifacts, we show that they can significantly improve the quality of program repair. We make the following contributions: (1) Methodologies to objectively evaluate repair techniques’ repair applicability and repair quality; (2) Swami, a technique that uses natural language processing to improve the developer-written tests by generating executable tests with oracles from software specifications; (3) Blues, a technique that uses information-retrieval-based approach to identify suspicious program statements using bug reports; (4) RAFL, an unsupervised technique that uses rank-aggregation algorithms to combine multiple fault localization techniques; and (5) An evaluation demonstrating that automatic program repair can improve significantly when using both tests and bug reports, together.
Type
dissertation
Date
2022-09
Publisher
Degree
License
License
http://creativecommons.org/licenses/by/4.0/