  Automatic program repair (APR) has recently gained attention because it
proposes to fix software defects with no human intervention. To automatically
fix defects, most APR tools use the developer-written tests to (a) localize the
defect, and (b) generate and validate the automatically produced candidate
patches based on the constraints imposed by the tests. While APR tools can
produce patches that appear to fix the defect for 11-19% of the defects in
real-world software, most of the patches produced are not correct or acceptable
to developers because they overfit to the tests used during the repair process.
This problem is known as the patch overfitting problem. To address this
problem, I propose to equip APR tools with additional constraints derived from
natural-language software artifacts such as bug reports and requirements
specifications that describe the bug and intended software behavior but are not
typically used by the APR tools. I hypothesize that patches produced by APR
tools while using such additional constraints would be of higher quality. To
test this hypothesis, I propose an automated and objective approach to evaluate
the quality of patches and propose two novel methods to improve the fault
localization and developer-written test suites using natural-language software
artifacts. Finally, I propose to use my patch evaluation methodology to analyze
the effect of the improved fault localization and test suites on the quality of
patches produced by APR tools for real-world defects.
