自动程序修复帮助开发者降低人工修复bug的成本.基于测试集的修复方法旨在生成能够通过测试集的代码补丁,以使程序正常运行.回顾了基于测试集的程序修复的现有文献,按照自动修复方法和实证基础两个方面陈述了研究进展.首先,将已有的自动修复方法划分为3类,分别是基于搜索的、基于代码穷举的和基于约束求解的补丁生成方法;其次,细致地描述了程序修复的实证研究基础以及该研究领域中的争议;然后,简要介绍了程序修复的相关技术作为修复方法的补充;最后做出总结,描述了面临的机遇和挑战.
Automatic program repair helps developers reduce the cost of manual bug fixing. Approaches to test-suite based repair aim to generate code patches to pass the test suite as well as maintain the program execution. This paper reviews available literature on test-suite based repair and report the progress in two directions: Approaches to automatic repair and empirical foundations. First, existing approaches to automatic repair are described in three categories: Search based, exhaustion based, and constraint-solving based patch generation. Second, empirical foundations on repair are detailed, including the argumentation in the research field. Related techniques are then briefly introduced as the supplementation of program repair. Finally, opportunities and challenges are presented to summarize this review.