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 correctly/plausibly fixes 74/101 bugs.
Replicating a standard and practical pipeline of APR assessment, we demonstrate
that TBar correctly fixes 43 bugs from Defects4J, an unprecedented performance
in the literature (including all approaches, i.e., template-based, stochastic
mutation-based or synthesis-based APR).Comment: Accepted by ISSTA 201