一句话:提出灰盒补丁调度算法 Gresino,利用程序分支命中计数指导补丁搜索,提升自动程序修复效率。
本文关注自动程序修复(APR)的效率问题。近期提出的补丁调度算法 Casino 借鉴模糊测试思想,依据前序评估结果自适应地选择下一个待评估的补丁候选,但其只利用测试结果,将打过补丁的程序视为黑盒。受灰盒模糊测试启发,作者提出新的补丁调度算法 Gresino:它监控程序执行过程中各分支的命中次数(hit counts),并以此内部状态信息引导对有效补丁的搜索,从而更高效地定位可修复缺陷的候选补丁。作者在 Defects4J 基准上结合 8 个 APR 工具进行了实验评估,结果验证了该方法的有效性。
In this paper, we pay attention to the efficiency of automated program repair (APR). Recently, an efficient patch scheduling algorithm, Casino, has been proposed to improve APR efficiency. Inspired by fuzzing, Casino adaptively chooses the next patch candidate to evaluate based on the results of previous evaluations. However, we observe that Casino utilizes only the test results, treating the patched program as a black box. Inspired by greybox fuzzing, we propose a novel patch-scheduling algorithm, Gresino, which leverages the internal state of the program to further enhance APR efficiency. Specifically, Gresino monitors the hit counts of branches observed during the execution of the program and uses them to guide the search for a valid patch. Our experimental evaluation on the Defects4J benchmark and eight APR tools demonstrates the efficacy of our approach.