Fast and Precise On-the-fly Patch Validation for All

07/22/2020
by   Lingchao Chen, et al.
0

Generate-and-validate (G V) automated program repair (APR) techniques have been extensively studied during the past decade. Meanwhile, such techniques can be extremely time-consuming due to manipulation of the program code to fabricate a large number of patches and also repeated executions of tests on patches to identify potential fixes. PraPR, a recent G V APR technique, reduces these costs by modifying program code directly at the level of compiled bytecode, and further performing on-the-fly patching by allowing multiple patches to be tested within the same JVM session. However, PraPR is limited due to its pattern-based, bytecode-level nature and it is basically unsound/imprecise as it assumes that patch executions do not change global JVM state and affect later patch executions on the same JVM session. Inspired by the PraPR work, we propose a unified patch validation framework, named UniAPR, which aims to speed up the patch validation for both bytecode and source-code APR via on-the-fly patching; furthermore, UniAPR addresses the imprecise patch validation issue by resetting the JVM global state via runtime bytecode transformation. We have implemented UniAPR as a fully automated Maven Plugin. We have also performed the first study of on-the-fly patch validation for state-of-the-art source-code-level APR. Our experiments show the first empirical evidence that vanilla on-the-fly patch validation can be imprecise/unsound; in contrast, our UniAPR framework can speed up state-of-the-art APR by over an order of magnitude without incurring any imprecision in patch validation, enabling all existing APR techniques to explore a larger search space to fix more bugs in the near future. Furthermore, UniAPR directly enables hybrid source and bytecode APR to fix substantially more bugs than all state-of-the-art APR techniques (under the same time limit) in the near future.

READ FULL TEXT

page 4

page 9

research
04/09/2021

Self-Boosted Automated Program Repair

Program repair is an integral part of every software system's life-cycle...
research
08/01/2023

Program Repair by Fuzzing over Patch and Input Space

Fuzz testing (fuzzing) is a well-known method for exposing bugs/vulnerab...
research
05/15/2021

How Does Regression Test Selection Affect Program Repair? An Extensive Study on 2 Million Patches

APR techniques can be extremely time consuming since (1) a large number ...
research
05/06/2023

Accelerating Patch Validation for Program Repair with Interception-Based Execution Scheduling

Long patch validation time is a limiting factor for automated program re...
research
07/14/2022

Attention: Not Just Another Dataset for Patch-Correctness Checking

Automated Program Repair (APR) techniques have drawn wide attention from...
research
12/28/2022

A Bayesian Framework for Automated Debugging

Debugging takes up a significant portion of developer time. As a result,...
research
12/08/2018

Production-Driven Patch Generation

We present an original concept for patch generation: we propose to do it...

Please sign up or login with your details

Forgot password? Click here to reset