论文标题
FlexirePair:通用补丁的透明程序维修
FlexiRepair: Transparent Program Repair with Generic Patches
论文作者
论文摘要
基于模板的程序维修研究需要以标准和可重复使用的方式表达固定模式的共同基础。我们建议以通用补丁的概念(也称为语义补丁)构建,该概念在Linux社区中广泛用于自动化代码演变。我们提倡通用补丁可以同时提供统一表示形式和修复模式的规范。通用补丁确实是正式定义的,并且存在一个健壮的,行业适应性且可扩展的引擎,该引擎会处理通用的补丁以执行控制流代码匹配,并根据指定的更改操作自动生成具体补丁。在本文中,我们介绍了修复框架FlexirePair的设计和实现,该框架探索了通用补丁作为核心概念。特别是,我们展示了如何在自动化程序维修(APR)的管道中推断和应用具体的通用补丁。借助FlexirePair,我们通过为基于模板的APR社区提供了紧迫的挑战,即通过在效率,效率和可用性方面提供了开放,透明和灵活的维修管道,将实施细节与实际科学贡献分开,可以进行严格的衡量和评估。此外,由于广泛的从业人员社区已经接受了基本工具和概念,因此我们希望FlexirePair通过行业采用。在Introclast和CodeFlaws基准上使用原型FlexirePair进行的初步实验表明,它已经构成了坚实的基线,其性能与某些最新状态相当。
Template-based program repair research is in need for a common ground to express fix patterns in a standard and reusable manner. We propose to build on the concept of generic patch (also known as semantic patch), which is widely used in the Linux community to automate code evolution. We advocate that generic patches could provide at the same time a unified representation and a specification for fix patterns. Generic patches are indeed formally defined, and there exists a robust, industry-adapted, and extensible engine that processes generic patches to perform control-flow code matching and automatically generates concretes patches based on the specified change operations. In this paper, we present the design and implementation of a repair framework, FLEXIREPAIR, that explores generic patches as the core concept. In particular, we show how concretely generic patches can be inferred and applied in a pipeline of Automated Program Repair (APR). With FLEXIREPAIR, we address an urgent challenge in the template-based APR community to separate implementation details from actual scientific contributions by providing an open, transparent and flexible repair pipeline on top of which all advancements in terms of efficiency, efficacy and usability can be measured and assessed rigorously. Furthermore, because the underlying tools and concepts have already been accepted by a wide practitioner community, we expect FLEXIREPAIR's adoption by industry to be facilitated. Preliminary experiments with a prototype FLEXIREPAIR on the IntroClass and CodeFlaws benchmarks suggest that it already constitutes a solid baseline with comparable performance to some of the state of the art.