SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repair
arXiv:1901.01808 · doi:10.1109/TSE.2019.2940179
Abstract
This paper presents a novel end-to-end approach to program repair based on sequence-to-sequence learning. We devise, implement, and evaluate a system, called SequenceR, for fixing bugs based on sequence-to-sequence learning on source code. This approach uses the copy mechanism to overcome the unlimited vocabulary problem that occurs with big code. Our system is data-driven; we train it on 35,578 samples, carefully curated from commits to open-source repositories. We evaluate it on 4,711 independent real bug fixes, as well on the Defects4J benchmark used in program repair research. SequenceR is able to perfectly predict the fixed line for 950/4711 testing samples, and find correct patches for 14 bugs in Defects4J. It captures a wide range of repair operators without any domain-specific top-down design.
21 pages, 15 figures
References in corpus (13)
- Neural Machine Translation by Jointly Learning to Align and Translate
- Sequence to Sequence Learning with Neural Networks
- Automatic Software Repair: a Bibliography
- Automatic Repair of Real Bugs in Java: A Large-Scale Experiment on the Defects4J Dataset
- Elixir: Effective object-oriented program repair
- Sorting and Transforming Program Repair Ingredients via Deep Learning Code Similarities
- Addressing the Rare Word Problem in Neural Machine Translation
- Dynamic Neural Program Embedding for Program Repair
- Code Vectors: Understanding Programs Through Embedded Abstracted Symbolic Traces
- Maybe Deep Neural Networks are the Best Choice for Modeling Source Code
- Learning to Generate Corrective Patches using Neural Machine Translation
- The CodRep Machine Learning on Source Code Competition
- You Cannot Fix What You Cannot Find! An Investigation of Fault Localization Bias in Benchmarking Automated Program Repair Systems
Cited by in corpus (72)
- Practical Program Repair in the Era of Large Pre-trained Language Models
- CURE: Code-Aware Neural Machine Translation for Automatic Program Repair
- CVEfixes: Automated Collection of Vulnerabilities and Their Fixes from Open-Source Software
- Less Training, More Repairing Please: Revisiting Automated Program Repair via Zero-shot Learning
- Neural Transfer Learning for Repairing Security Vulnerabilities in C Code
- Neural Program Repair with Execution-based Backpropagation
- Big Code != Big Vocabulary: Open-Vocabulary Models for Source Code
- Predicting Defective Lines Using a Model-Agnostic Technique
- 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 Feasibility of Transfer-learning Code Smells using Deep Learning
- CODIT: Code Editing with Tree-Based Neural Models
- Copiloting the Copilots: Fusing Large Language Models with Completion Engines for Automated Program Repair
- An Empirical Study on the Usage of Transformer Models for Code Completion
- How Effective Are Neural Networks for Fixing Security Vulnerabilities
- Deep Learning-based Software Engineering: Progress, Challenges, and Opportunities
- SelfAPR: Self-supervised Program Repair with Test Execution Diagnostics
- Automated Classification of Overfitting Patches with Statically Extracted Code Features
- Automated Patch Assessment for Program Repair at Scale
- Unsupervised Translation of Programming Languages
- Exploring Software Naturalness through Neural Language Models
- Graph-based, Self-Supervised Program Repair from Diagnostic Feedback
- Generating Bug-Fixes Using Pretrained Transformers
- ITER: Iterative Neural Repair for Multi-Location Patches
- Learning to Generate Corrective Patches using Neural Machine Translation
- SCELMo: Source Code Embeddings from Language Models
- Break-It-Fix-It: Unsupervised Learning for Program Repair
- Program Synthesis with Large Language Models
- Revisiting the Plastic Surgery Hypothesis via Large Language Models
- PromSec: Prompt Optimization for Secure Generation of Functional Source Code with Large Language Models (LLMs)
- Neural Program Repair: Systems, Challenges and Solutions
- Invalidator: Automated Patch Correctness Assessment via Semantic and Syntactic Reasoning
- RepairLLaMA: Efficient Representations and Fine-Tuned Adapters for Program Repair
- AutoPruner: Transformer-Based Call Graph Pruning
- DOBF: A Deobfuscation Pre-Training Objective for Programming Languages
- Learning Lenient Parsing & Typing via Indirect Supervision
- PyTy: Repairing Static Type Errors in Python
- Automated Test Case Repair Using Language Models
- A Software-Repair Robot based on Continual Learning
- The EarlyBIRD Catches the Bug: On Exploiting Early Layers of Encoder Models for More Efficient Code Classification
- Is this Change the Answer to that Problem? Correlating Descriptions of Bug and Code Changes for Evaluating Patch Correctness
- Styler: learning formatting conventions to repair Checkstyle violations
- DeepDebug: Fixing Python Bugs Using Stack Traces, Backtranslation, and Code Skeletons
- Toward a Theory of Causation for Interpreting Neural Code Models
- Learning Structural Edits via Incremental Tree Transformations
- T5APR: Empowering Automated Program Repair across Languages through Checkpoint Ensemble
- A Survey on Machine Learning Techniques for Source Code Analysis
- Learning the Relation between Code Features and Code Transforms with Structured Prediction
- Leveraging Automated Unit Tests for Unsupervised Code Translation
- Self-Supervised Learning to Prove Equivalence Between Straight-Line Programs via Rewrite Rules
- ENCORE: Ensemble Learning using Convolution Neural Machine Translation for Automatic Program Repair
- Practical Program Repair via Preference-based Ensemble Strategy
- Unit Test Case Generation with Transformers and Focal Context
- Program Repair with Minimal Edits Using CodeT5
- Enabling Automatic Repair of Source Code Vulnerabilities Using Data-Driven Methods
- Test-based Patch Clustering for Automatically-Generated Patches Assessment
- STEAM: Simulating the InTeractive BEhavior of ProgrAMmers for Automatic Bug Fixing
- Beep: Fine-grained Fix Localization by Learning to Predict Buggy Code Elements
- Which Syntactic Capabilities Are Statistically Learned by Masked Language Models for Code?
- SAGA: Summarization-Guided Assert Statement Generation
- Equivalence of Dataflow Graphs via Rewrite Rules Using a Graph-to-Sequence Neural Model
- Extracting Concise Bug-Fixing Patches from Human-Written Patches in Version Control Systems
- Patching as Translation: the Data and the Metaphor
- Seeing is Fixing: Cross-Modal Reasoning with Multimodal LLMs for Visual Software Issue Fixing
- Proving Equivalence Between Complex Expressions Using Graph-to-Sequence Neural Models
- Automatic Program Repair with OpenAI's Codex: Evaluating QuixBugs
- A Controlled Experiment of Different Code Representations for Learning-Based Bug Repair
- Searching for Multi-Fault Programs in Defects4J
- Out of Context: How important is Local Context in Neural Program Repair?
- Assessing the Latent Automated Program Repair Capabilities of Large Language Models using Round-Trip Translation
- 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