TBar: Revisiting Template-based Automated Program Repair
arXiv:1903.08409 · doi:10.1145/3293882.3330577
Abstract
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).
Accepted by ISSTA 2019
References in corpus (9)
- Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
- Automatic Software Repair: a Bibliography
- Sorting and Transforming Program Repair Ingredients via Deep Learning Code Similarities
- Identifying Patch Correctness in Test-Based Program Repair
- Mining Software Repair Models for Reasoning on the Search Space of Automated Program Fixing
- Test Case Purification for Improving Fault Localization
- Bears: An Extensible Java Bug Benchmark for Automatic Program Repair Studies
- Dynamic Patch Generation for Null Pointer Exceptions using Metaprogramming
- Ultra-Large Repair Search Space with Automatically Mined Templates: the Cardumen Mode of Astor
Cited by in corpus (31)
- Practical Program Repair in the Era of Large Pre-trained Language Models
- CURE: Code-Aware Neural Machine Translation for Automatic Program Repair
- FixMiner: Mining Relevant Fix Patterns for Automated Program Repair
- Neural Program Repair with Execution-based Backpropagation
- Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT
- Natural Language Generation and Understanding of Big Code for AI-Assisted Programming: A Review
- On the Efficiency of Test Suite based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs
- Copiloting the Copilots: Fusing Large Language Models with Completion Engines for Automated Program Repair
- Deep Learning-based Software Engineering: Progress, Challenges, and Opportunities
- Opportunities and Challenges in Code Search Tools
- iFixR: Bug Report driven Program Repair
- SelfAPR: Self-supervised Program Repair with Test Execution Diagnostics
- ITER: Iterative Neural Repair for Multi-Location Patches
- Revisiting the Plastic Surgery Hypothesis via Large Language Models
- Invalidator: Automated Patch Correctness Assessment via Semantic and Syntactic Reasoning
- IBIR: Bug Report driven Fault Injection
- Automated Test Case Repair Using Language Models
- Accelerating Patch Validation for Program Repair with Interception-Based Execution Scheduling
- DrPlanner: Diagnosis and Repair of Motion Planners for Automated Vehicles Using Large Language Models
- T5APR: Empowering Automated Program Repair across Languages through Checkpoint Ensemble
- A Comprehensive Study of Code-removal Patches in Automated Program Repair
- Practical Program Repair via Preference-based Ensemble Strategy
- Test-based Patch Clustering for Automatically-Generated Patches Assessment
- Utilizing Source Code Syntax Patterns to Detect Bug Inducing Commits using Machine Learning Models
- STEAM: Simulating the InTeractive BEhavior of ProgrAMmers for Automatic Bug Fixing
- QEDCartographer: Automating Formal Verification Using Reward-Free Reinforcement Learning
- Energy Consumption of Automated Program Repair
- Estimating the Potential of Program Repair Search Spaces with Commit Analysis
- A Fault Localization and Debugging Support Framework driven by Bug Tracking Data
- MultiMend: Multilingual Program Repair with Context Augmentation and Multi-Hunk Patch Generation
- Show Me Why It's Correct: Saving 1/3 of Debugging Time in Program Repair with Interactive Runtime Comparison