一句话:提出在JVM字节码层面进行变异修复的实用自动程序修复技术,快且跨语言适用。
自动程序修复(APR)旨在通过生成高质量补丁减轻调试负担,实用APR需兼顾可扩展性、适用性与补丁验证准确性。本文提出PraPR,一种在JVM字节码层面运作的实用APR技术,并讨论其设计决策。该方法基于简单的变异模板,直接在字节码上生成并验证补丁,从而避免源码级修复的局限。实验表明:(1) PraPR修复的缺陷数量超过当前最先进APR技术,且速度可快10倍以上;(2) 现有APR技术存在数据集过拟合问题,而基于模板的PraPR在不同数据集上表现更一致;(3) PraPR还能修复Kotlin等其他JVM语言的缺陷。PraPR已开源,被视为通向上述设计目标的可行基线。
Automated program repair (APR) is one of the recent advances in automated software engineering aiming for reducing the burden of debugging by suggesting high-quality patches that either directly fix the bugs, or help the programmers in the course of manual debugging. We believe scalability, applicability, and accurate patch validation are the main design objectives for a practical APR technique. In this paper, we present PraPR, our implementation of a practical APR technique that operates at the level of JVM bytecode. We discuss design decisions made in the development of PraPR, and argue that the technique is a viable baseline toward attaining aforementioned objectives. Our experimental results show that: (1) PraPR can fix more bugs than state-of-the-art APR techniques and can be over 10X faster, (2) state-of-the-art APR techniques suffer from dataset overfitting, while the simplistic template-based PraPR performs more consistently on different datasets, and (3) PraPR can fix bugs for other JVM languages, such as Kotlin. PraPR is publicly available at https://github.com/prapr/prapr.
DOI 原文 ·
@inproceedings{paperbot5190,
title = {PraPR: Practical Program Repair via Bytecode Mutation},
author = {Ali Ghanbari and Lingming Zhang},
booktitle = {ASE},
year = {2019},
doi = {10.1109/ase.2019.00116}
}