TBar: Revisiting Template-based Automated Program Repair
Fix patterns (a.k.a fix templates) are the main ingredients that drive a significant portion of automated program repair (APR) studies in the literature. As fix patterns become widely adopted in various approaches, it becomes critical to thoroughly assess the effectiveness of existing templates to establish a clear baseline for APR. In this paper, we revisit the performance of template-based APR to build comprehensive knowledge about the effectiveness of fix patterns, and to highlight the importance of complementary steps such as fault localization or donor code retrieval. To that end, we first investigate the literature to collect, summarize and label recurrently-used fix patterns. Based on the investigation, we build TBar, a straightforward APR tool that systematically attempts to apply these fix patterns to program bugs. We thoroughly evaluate TBar on the Defects4J benchmark. In particular, we assess the actual qualitative and quantitative diversity of fix patterns, as well as their effectiveness in yielding plausible or correct patches. Eventually, we find that, assuming a perfect fault localization, TBar is able to correctly/plausibly fix 74/102 bugs, while a previous baseline (i.e., kPAR) fixes only 36/55 bugs. Replicating a standard and practical pipeline of APR assessment, we demonstrate that TBar can correctly fix 43 bugs from Defects4J, an unprecedented performance in the literature (including all approaches, i.e., template-based, stochastic mutation-based or synthesis-based APR).
READ FULL TEXT