T5APR: Empowering Automated Program Repair across Languages through Checkpoint Ensemble
arXiv:2309.15742 · doi:10.1016/j.jss.2024.112083
Abstract
Automated program repair (APR) using deep learning techniques has become an important area of research in recent years, aiming to automatically generate bug-fixing patches that can improve software reliability and maintainability. However, most existing methods either target a single language or require high computational resources to train multilingual models. In this paper, we propose T5APR, a novel neural program repair approach that provides a unified solution for bug fixing across multiple programming languages. T5APR leverages CodeT5, a powerful pre-trained text-to-text transformer model, and adopts a checkpoint ensemble strategy to improve patch recommendation. We conduct comprehensive evaluations on six well-known benchmarks in four programming languages (Java, Python, C, JavaScript), demonstrating T5APR's competitiveness against state-of-the-art techniques. T5APR correctly fixes 1,985 bugs, including 1,442 bugs that none of the compared techniques has fixed. We further support the effectiveness of our approach by conducting detailed analyses, such as comparing the correct patch ranking among different techniques. The findings of this study demonstrate the potential of T5APR for use in real-world applications and highlight the importance of multilingual approaches in the field of APR.
arXiv commentAccepted to the Journal of Systems and Software
References in corpus (17)
- CodeSearchNet Challenge: Evaluating the State of Semantic Code Search
- SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repair
- TBar: Revisiting Template-based Automated Program Repair
- FixMiner: Mining Relevant Fix Patterns for Automated Program Repair
- Neural Program Repair with Execution-based Backpropagation
- Big Code != Big Vocabulary: Open-Vocabulary Models for Source Code
- BugsInPy: A Database of Existing Bugs in Python Programs to Enable Controlled Testing and Debugging Studies
- On the Efficiency of Test Suite based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs
- CODIT: Code Editing with Tree-Based Neural Models
- How to Design a Program Repair Bot? Insights from the Repairnator Project
- Automated Patch Assessment for Program Repair at Scale
- A Comprehensive Study of Automatic Program Repair on the QuixBugs Benchmark
- Language-Agnostic Representation Learning of Source Code from Structure and Context
- ITER: Iterative Neural Repair for Multi-Location Patches
- Checkpoint Ensembles: Ensemble Methods from a Single Training Process
- Neural Program Repair: Systems, Challenges and Solutions
- A Survey on Automated Program Repair Techniques