Towards Improving Program Repair via Patch Repair Execution Information

Date

2022-05-01T05:00:00.000Z

Journal Title

Journal ISSN

Volume Title

Publisher

Abstract

Automated program repair is increasingly integral in the debugging process of real-world software systems everywhere. Despite decades of research, however, fault localization on real-world systems suffers from heavy imprecision and inaccuracies. Modern program repair is founded on fault localization as an initial step, so this imprecision feeds into the program repair process to ultimately harm program repair speed and effectiveness. Modern debugging techniques, such as automated program repair, often exclusively use fault localization computed at the beginning of software debugging, essentially ignoring extensive dynamic information generated during the debugging process. As techniques develop and computer systems mature, automated program repair techniques must validate increasingly more patch candidates. This extended validation stage is extremely time consuming to the point where repair techniques must often compromise their repair effectiveness to boost performance. Many solutions have attempted to minimize the length of patch validation, but such solutions are also either resource heavy or exclusively applicable to specific types of debugging techniques. The aforementioned issues provide rather challenging obstacles in the program repair process, ultimately impeding bug correction within software systems due to (1) imprecision in fault localization accuracy, (2), extremely time-consuming debugging, and (3) reduced repair scope. This dissertation addresses the aforementioned issues by investigating the usage of patch repair execution information inherent within automated program repair tools to automatically improve the program repair process without the need for external data or changing the foundation of existing program repair tools. Specifically, this research demonstrates the successful usage of patch repair execution information collected from up to 17 recent stateof-the-art Java-based automated program repair tools to (1) improve both fault localization accuracy and (2) automatically boost performance for automated program repair tools, both achievements based on experimental data against the Defects4J 1.0.0 and Defects4J 1.2.0 benchmarks. This research finds numerous discoveries beneficial to software debugging and automated program repair. Specifically, this research introduces 4 fault localization techniques (UniDebug, UniDebug+, UniDebug++, and UniDebug+⋆ ) utilizing increasing levels of patch repair execution information. These variants boost upon commonly used spectra-based fault localization up to 63% at the method-level granularity and several magnitudes higher (+5,200%) at the statement-level granularity. Additionally, this research introduces one patch validation technique, SeAPR. SeAPR with minimal patch repair execution information shows reductions in the number of patches validated up to 80% and the length of patch validation reduced up to 56%. More so, utilizing additional patch repair execution information further boosts patch reductions in all observed tools. Overall, the research shows that (1) patch repair execution information contains information useful to grossly improve upon initial fault localization strategies in nearly every scenario, (2) patch repair execution information boosts learning-based fault localization techniques, (3) patch repair execution information can be used to reduce the number of patch execution to the first plausible patch, and (4) the potential benefits of patch repair execution information are independent of the effectiveness of the underlying program repair tool.

Description

Citation