一句话:提出 VarFix,借助变体执行实现不牺牲编辑表达力的系统化补丁搜索,提升自动程序修复效果。
自动程序修复本质上是一个搜索问题:搜索能通过测试的代码变换。已有工作或采用启发式以随意方式导航搜索空间,或虽系统化却限制了所支持程序编辑的种类,从而牺牲编辑表达力。本文探索在不损失编辑表达力的前提下系统化地导航搜索空间,其关键使能技术是变体执行(variational execution)——一种已被证明能在大搜索空间中高效探索大量相似执行的动态分析技术。作者在 IntroClassJava 与 Defects4J 上评估该方法,结果表明系统化搜索能够有效利用并组合各类修复素材以合成补丁,其中包括大量高质量补丁与多编辑补丁。
Automatically repairing a buggy program is essentially a search problem, searching for code transformations that pass a set of tests. Various search strategies have been explored, but they either navigate the search space in an ad hoc way using heuristics, or systemically but at the cost of limited edit expressiveness in the kinds of supported program edits. In this work, we explore the possibility of systematically navigating the search space without sacrificing edit expressiveness. The key enabler of this exploration is variational execution, a dynamic analysis technique that has been shown to be effective at exploring many similar executions in large search spaces. We evaluate our approach on IntroClassJava and Defects4J, showing that a systematic search is effective at leveraging and combining fixing ingredients to find patches, including many high-quality patches and multi-edit patches.
@inproceedings{paperbot6294,
title = {VarFix: balancing edit expressiveness and search effectiveness in automated program repair},
author = {Chu-Pan Wong and Priscila Santiesteban and Christian Kästner and Claire Le Goues},
booktitle = {FSE},
year = {2021},
doi = {10.1145/3468264.3468600}
}