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.
翻译:自动程序修补( APR) 最近引起了人们的注意, 因为它建议修补软件缺陷, 而没有人为干预。 为了自动修补缺陷, 大部分 APR 工具使用开发者编写的测试来(a) 将缺陷本地化, 以及 (b) 根据测试的限制, 生成和验证自动产生的候选补丁。 虽然 APR 工具可以产生补丁, 似乎可以修正真实世界软件11- 19 % 缺陷的缺陷, 但所产生的大部分补丁对于开发者来说并不正确或不可接受, 因为他们过度适应修复过程中使用的测试。 这个问题被称为补补补问题 。 为了解决这个问题, 我提议用天然语言软件的错误化和开发测试套件等自然语言软件工艺的附加限制, 例如描述错误报告和要求规格, 描述错误和预期的软件行为, 但不一般由 APR 工具使用。 我假设说, 在使用这些额外限制的同时, 编补补的补丁对于开发者来说是质量更高的。 为了检验补缺缺的质, 我提议一种自动化和客观的方法来改进本地的补缺损测试套。 我建议用自然语言的补缺损测试工具来改进本地的校正。