Repairing a large-scale buggy program using current automated program repair (APR) approaches can be a time-consuming operation that requires significant computational resources. We describe a program repair framework that effectively handles large-scale buggy programs of industrial complexity. The framework exploits program reduction in the form of program slicing to eliminate parts of the code irrelevant to the bug being repaired without adversely affecting the capability of the repair system in producing correct patches. Observation-based slicing is a recently introduced, language-independent slicing technique that shows a good effectiveness in a wide range of applications. In this work, we show how ORBS can be effectively integrated with APR to improve all aspects of the repair process including the fault localization step, patch generation step, and patch validation step. The presented repair framework indeed enhances the capability of APR by reducing the execution cost of a test suite and the search cost for the appropriate faulty statement corresponding to the bug being repair. Our empirical results on the widely used Defects4J dataset reveal that a substantial improvement in performance can be obtained without any degradation in repair quality.
翻译:使用当前的自动化程序修复(APR)方法修复大规模缺陷程序可能是一项耗时的操作,需要大量计算资源。本文描述了一种能有效处理工业复杂度大规模缺陷程序的修复框架。该框架利用程序切片形式的程序缩减技术,在不影响修复系统生成正确补丁能力的前提下,消除与待修复缺陷无关的代码部分。基于观察的切片(ORBS)是最近提出的一种与语言无关的切片技术,已在多种应用中展现出良好效果。本研究表明,ORBS如何能有效与APR集成,从而改进修复过程的各个环节,包括缺陷定位步骤、补丁生成步骤和补丁验证步骤。所提出的修复框架通过降低测试套件的执行成本以及搜索与待修复缺陷对应错误语句的成本,切实增强了APR的能力。我们在广泛使用的Defects4J数据集上的实验结果表明,可以在不降低修复质量的前提下获得显著的性能提升。