Break-It-Fix-It: Unsupervised Learning for Program Repair
Not on the map. Why?
Abstract (arXiv)
We consider repair tasks: given a critic (e.g., compiler) that assesses the quality of an input, the goal is to train a fixer that converts a bad example (e.g., code with syntax errors) into a good one (e.g., code with no syntax errors). Existing works create training data consisting of (bad, good) pairs by corrupting good examples using heuristics (e.g., dropping tokens). However, fixers trained on this synthetically-generated data do not extrapolate well to the real distribution of bad inputs. To bridge this gap, we propose a new training approach, Break-It-Fix-It (BIFI), which has two key ideas: (i) we use the critic to check a fixer's output on real bad inputs and add good (fixed) outputs to the training data, and (ii) we train a breaker to generate realistic bad code from good code. Based on these ideas, we iteratively update the breaker and the fixer while using them in conjunction to generate more paired data. We evaluate BIFI on two code repair datasets: GitHub-Python, a new dataset we introduce where the goal is to repair Python code with AST parse errors; and DeepFix, where the goal is to repair C code with compiler errors. BIFI outperforms existing methods, obtaining 90.5% repair accuracy on GitHub-Python (+28.5%) and 71.7% on DeepFix (+5.6%). Notably, BIFI does not require any labeled data; we hope it will be a strong starting point for unsupervised learning of various repair tasks.
Key facts. Cited by 71 papers in the map (data through 14 Oct 2026). Builds on 49 of its 80 references that are in the map. First posted on arXiv 11 Jun 2021.
Builds on
49 of 80 references.
References · 49
- 2017Attention Is All You Needcited by 60,361
- 2014Adam: A Method for Stochastic Optimizationcited by 37,240
- 2019BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehensioncited by 5,893
- 2014Unsupervised Domain Adaptation by Backpropagationcited by 1,917
- 2019MixMatch: A Holistic Approach to Semi-Supervised Learningcited by 1,391
- 2020WILDS: A Benchmark of in-the-Wild Distribution Shiftscited by 1,375
- 2018Moment Matching for Multi-Source Domain Adaptationcited by 1,331
- 2016Deep CORAL: Correlation Alignment for Deep Domain Adaptationcited by 1,200
- 2017Deep Hashing Network for Unsupervised Domain Adaptationcited by 1,188
- 2018Spider: A Large-Scale Human-Labeled Dataset for Complex and Cross-Domain Semantic Parsing and Text-to-SQL Taskcited by 1,139
- 2017CyCADA: Cycle-Consistent Adversarial Domain Adaptationcited by 1,082
- 2019Unsupervised Data Augmentation for Consistency Trainingcited by 1,060
37 more
- 2016Playing for Data: Ground Truth from Computer Gamescited by 818
- 2015Improving Neural Machine Translation Models with Monolingual Datacited by 788
- 2014Deep Speech: Scaling up end-to-end speech recognitioncited by 354
- 2017Data Augmentation Generative Adversarial Networkscited by 278
- 2017Unsupervised Machine Translation Using Monolingual Corpora Onlycited by 273
- 2020Unsupervised Translation of Programming Languagescited by 263
- 2017Style Transfer from Non-Parallel Text by Cross-Alignmentcited by 248
- 2020Selective Question Answering under Domain Shiftcited by 238
- 2017Unsupervised Neural Machine Translationcited by 149
- 2020Understanding Self-Training for Gradual Domain Adaptationcited by 149
- 2018SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repaircited by 145
- 2019SParC: Cross-Domain Semantic Parsing in Contextcited by 144
- 2018Phrase-Based & Neural Unsupervised Machine Translationcited by 138
- 2016Data Recombination for Neural Semantic Parsingcited by 111
- 2020Graph-based, Self-Supervised Program Repair from Diagnostic Feedbackcited by 94
- 2018Learning Multimodal Graph-to-Graph Translation for Molecular Optimizationcited by 88
- 2019A Discrete Hard EM Approach for Weakly Supervised Question Answeringcited by 78
- 2020Grounded Adaptation for Zero-shot Executable Semantic Parsingcited by 76
- 2018SyntaxSQLNet: Syntax Tree Networks for Complex and Cross-DomainText-to-SQL Taskcited by 74
- 2018Unsupervised Text Style Transfer using Language Models as Discriminatorscited by 70
- 2018DeepBugs: A Learning Approach to Name-based Bug Detectioncited by 65
- 2019Test-Time Training with Self-Supervision for Generalization under Distribution Shiftscited by 59
- 2018Unsupervised Statistical Machine Translationcited by 51
- 2020In-N-Out: Pre-Training and Self-Training using Auxiliary Information for Out-of-Distribution Robustnesscited by 50
- 2017From Language to Programs: Bridging Reinforcement Learning and Maximum Marginal Likelihoodcited by 41
- 2019Getafix: Learning to Fix Bugs Automaticallycited by 41
- 2019Neural Program Repair by Jointly Learning to Localize and Repaircited by 40
- 2020AutoQA: From Databases To QA Semantic Parsers With Only Synthetic Training Datacited by 29
- 2019Learning to Fix Build Errors with Graph2Diff Neural Networkscited by 26
- 2017Dynamic Neural Program Embedding for Program Repaircited by 23
- 2017Robust Multilingual Part-of-Speech Tagging via Adversarial Trainingcited by 21
- 2018Style Transfer as Unsupervised Machine Translationcited by 19
- 2020Improving Molecular Design by Stochastic Iterative Target Augmentationcited by 18
- 2020Patching as Translation: the Data and the Metaphorcited by 18
- 2016sk_p: a neural program corrector for MOOCscited by 10
- 2018Deep Reinforcement Learning for Programming Language Correctioncited by 4
- 2019Learning Autocomplete Systems as a Communication Gamecited by 4
Built on by
Citing papers per year: 2021: 2; 2022: 16; 2023: 22; 2024: 14; 2025: 10; 2026: 7.
71 papers.
Sort:
By area:
- 2022PaLM: Scaling Language Modeling with Pathwayscited by 5,326
- 2023Code Llama: Open Foundation Models for Codecited by 2,139
- 2023Teaching Large Language Models to Self-Debugcited by 988
- 2022InCoder: A Generative Model for Code Infilling and Synthesiscited by 498
- 2022Generating Sequences by Learning to Self-Correctcited by 277
- 2024When Can LLMs Actually Correct Their Own Mistakes? A Critical Survey of Self-Correction of LLMscited by 240
- 2023Is Self-Repair a Silver Bullet for Code Generation?cited by 197
- 2023OctoPack: Instruction Tuning Code Large Language Modelscited by 189
- 2023Baldur: Whole-Proof Generation and Repair with Large Language Modelscited by 119
- 2023Large Language Models as Analogical Reasonerscited by 107
- 2023A Survey on LLM-Generated Text Detection: Necessity, Methods, and Future Directionscited by 105
- 2022Repair Is Nearly Generation: Multilingual Program Repair with LLMscited by 68
38 more
- 2022Compilable Neural Code Generation with Compiler Feedbackcited by 47
- 2024From Code to Correctness: Closing the Last Mile of Code Generation with Hierarchical Debuggingcited by 46
- 2022Grammatical Error Correction: A Survey of the State of the Artcited by 43
- 2023SelfEvolve: A Code Evolution Framework via Large Language Modelscited by 43
- 2023A New Era in Software Security: Towards Self-Healing Software via Large Language Models and Formal Verificationcited by 42
- 2021Learning to Repair: Repairing model output errors after deployment using a dynamic memory of feedbackcited by 35
- 2021LM-Critic: Language Models for Unsupervised Grammatical Error Correctioncited by 33
- 2023Measuring The Impact Of Programming Language Distributioncited by 32
- 2023Large Language Models of Code Fail at Completing Code with Potential Bugscited by 29
- 2022Repairing Bugs in Python Assignments Using Large Language Modelscited by 28
- 2024Performance-Aligned LLMs for Generating Fast Codecited by 21
- 2023INTERVENOR: Prompting the Coding Ability of Large Language Models with the Interactive Chain of Repaircited by 18
- 2022FixEval: Execution-based Evaluation of Program Fixes for Programming Problemscited by 17
- 2023ITER: Iterative Neural Repair for Multi-Location Patchescited by 16
- 2024MdEval: Massively Multilingual Code Debuggingcited by 16
- 2022On Distribution Shift in Learning-based Bug Detectorscited by 15
- 2023FLAME: A small language model for spreadsheet formulascited by 15
- 2023Better Context Makes Better Code Language Models: A Case Study on Function Call Argument Completioncited by 14
- 2024What can Large Language Models Capture about Code Functional Equivalence?cited by 14
- 2024COAST: Enhancing the Code Debugging Ability of LLMs through Communicative Agent Based Data Synthesiscited by 13
- 2022Neurosymbolic Repair for Low-Code Formula Languagescited by 12
- 2022Detect-Localize-Repair: A Unified Framework for Learning to Debug with CodeT5cited by 10
- 2022Improving Automated Program Repair with Domain Adaptationcited by 10
- 2022Fix Bugs with Transformer through a Neural-Symbolic Edit Grammarcited by 8
- 2022A Simple, Yet Effective Approach to Finding Biases in Code Generationcited by 8
- 2025CLOVER: A Test Case Generation Benchmark with Coverage, Long-Context, and Verificationcited by 8
- 2023LExecutor: Learning-Guided Executioncited by 7
- 2024Planning-Driven Programming: A Large Language Model Programming Workflowcited by 7
- 2026Learning to Repair Lean Proofs from Compiler Feedbackcited by 7
- 2023ZeroLeak: Using LLMs for Scalable and Cost Effective Side-Channel Patchingcited by 6
- 2023A Block Metropolis-Hastings Sampler for Controllable Energy-based Text Generationcited by 6
- 2024mathbbUSCD: Improving Code Generation of LLMs by Uncertainty-Aware Selective Contrastive Decodingcited by 6
- 2023The EarlyBIRD Catches the Bug: On Exploiting Early Layers of Encoder Models for More Efficient Code Classificationcited by 5
- 2025RepoDebug: Repository-Level Multi-Task and Multi-Language Debugging Evaluation of Large Language Modelscited by 5
- 2026CODESTRUCT: Code Agents over Structured Action Spacescited by 5
- 2022Can we learn from developer mistakes? Learning to localize and repair real bugs from real bug fixescited by 4
- 2024Aligners: Decoupling LLMs and Alignmentcited by 4
- 2024Learning Program Behavioral Models from Synthesized Input-Output Pairscited by 4
50 most cited of 71 All 71 (JSON)
- 2026Anchored Self-Play for Code Repair3 Jul 2026
- 2026XSearch: Explainable Code Search via Concept-to-Code Alignment15 May 2026
- 2026How LLMs Fail and Generalize in RTL Coding for Hardware Design?26 Apr 2026
- 2026Precise Debugging Benchmark: Is Your Model Debugging or Regenerating?19 Apr 2026
- 2026CODESTRUCT: Code Agents over Structured Action Spaces7 Apr 2026
- 2026Learning to Repair Lean Proofs from Compiler Feedback3 Feb 2026
- 2026Beyond Text-to-SQL: Can LLMs Really Debug Enterprise ETL SQL?26 Jan 2026
- 2025RepoDebug: Repository-Level Multi-Task and Multi-Language Debugging Evaluation of Large Language Models4 Sep 2025
- 2025Diffusion is a code repair operator and generator14 Aug 2025
- 2025The Impact of Fine-tuning Large Language Models on Automated Program Repair26 Jul 2025
- 2025Effective LLM Code Refinement via Property-Oriented and Structurally Minimal Feedback23 Jun 2025
- 2025Gradient-Based Program Repair: Fixing Bugs in Continuous Program Spaces23 May 2025
38 more
- 2025NL-Debugging: Exploiting Natural Language as an Intermediate Representation for Code Debugging21 May 2025
- 2025Semantic-Preserving Transformations as Mutation Operators: A Study on Their Effectiveness in Defect Detection30 Mar 2025
- 2025Where's the Bug? Attention Probing for Scalable Fault Localization19 Feb 2025
- 2025AuPair: Golden Example Pairs for Code Repair12 Feb 2025
- 2025CLOVER: A Test Case Generation Benchmark with Coverage, Long-Context, and Verification12 Feb 2025
- 2024Planning-Driven Programming: A Large Language Model Programming Workflow21 Nov 2024
- 2024PDC & DM-SFT: A Road for LLM SQL Bug-Fix Enhancing11 Nov 2024
- 2024MdEval: Massively Multilingual Code Debugging4 Nov 2024
- 2024A Simple Yet Effective Corpus Construction Framework for Indonesian Grammatical Error Correction28 Oct 2024
- 2024From Code to Correctness: Closing the Last Mile of Code Generation with Hierarchical Debugging2 Oct 2024
- 2024mathbbUSCD: Improving Code Generation of LLMs by Uncertainty-Aware Selective Contrastive Decoding9 Sep 2024
- 2024What can Large Language Models Capture about Code Functional Equivalence?20 Aug 2024
- 2024COAST: Enhancing the Code Debugging Ability of LLMs through Communicative Agent Based Data Synthesis9 Aug 2024
- 2024Learning Program Behavioral Models from Synthesized Input-Output Pairs11 Jul 2024
- 2024When Can LLMs Actually Correct Their Own Mistakes? A Critical Survey of Self-Correction of LLMs3 Jun 2024
- 2024Generating Feedback-Ladders for Logical Errors in Programming using Large Language Models1 May 2024
- 2024Performance-Aligned LLMs for Generating Fast Code29 Apr 2024
- 2024Peer-aided Repairer: Empowering Large Language Models to Repair Advanced Student Assignments2 Apr 2024
- 2024Aligners: Decoupling LLMs and Alignment7 Mar 2024
- 2023A Block Metropolis-Hastings Sampler for Controllable Energy-based Text Generation7 Dec 2023
- 2023INTERVENOR: Prompting the Coding Ability of Large Language Models with the Interactive Chain of Repair16 Nov 2023
- 2023A Survey on LLM-Generated Text Detection: Necessity, Methods, and Future Directions23 Oct 2023
- 2023Beyond Hard Samples: Robust and Effective Grammatical Error Correction with Cycle Self-Augmenting20 Oct 2023
- 2023Large Language Models as Analogical Reasoners3 Oct 2023
- 2023HTEC: Human Transcription Error Correction18 Sep 2023
- 2023ZeroLeak: Using LLMs for Scalable and Cost Effective Side-Channel Patching24 Aug 2023
- 2023Code Llama: Open Foundation Models for Code24 Aug 2023
- 2023OctoPack: Instruction Tuning Code Large Language Models14 Aug 2023
- 2023Is Self-Repair a Silver Bullet for Code Generation?16 Jun 2023
- 2023Large Language Models of Code Fail at Completing Code with Potential Bugs6 Jun 2023
- 2023SelfEvolve: A Code Evolution Framework via Large Language Models5 Jun 2023
- 2023Better Context Makes Better Code Language Models: A Case Study on Function Call Argument Completion1 Jun 2023
- 2023A New Era in Software Security: Towards Self-Healing Software via Large Language Models and Formal Verification24 May 2023
- 2023The EarlyBIRD Catches the Bug: On Exploiting Early Layers of Encoder Models for More Efficient Code Classification8 May 2023
- 2023ITER: Iterative Neural Repair for Multi-Location Patches24 Apr 2023
- 2023Teaching Large Language Models to Self-Debug11 Apr 2023
- 2023Baldur: Whole-Proof Generation and Repair with Large Language Models8 Mar 2023
- 2023On ML-Based Program Translation: Perils and Promises21 Feb 2023
50 newest of 71 All 71 (JSON)
- 2023Code Llama: Open Foundation Models for Codecited by 2,139
- 2023Teaching Large Language Models to Self-Debugcited by 988
- 2023Large Language Models as Analogical Reasonerscited by 107
- 2025AuPair: Golden Example Pairs for Code Repaircited by 3
- 2025AuPair: Golden Example Pairs for Code Repair12 Feb 2025
- 2023Large Language Models as Analogical Reasoners3 Oct 2023
- 2023Code Llama: Open Foundation Models for Code24 Aug 2023
- 2023Teaching Large Language Models to Self-Debug11 Apr 2023
- 2025Diffusion is a code repair operator and generatorcited by 3
- 2025Diffusion is a code repair operator and generator14 Aug 2025
- 2026Anchored Self-Play for Code Repaircited by 1
- 2026Anchored Self-Play for Code Repair3 Jul 2026
- 2022PaLM: Scaling Language Modeling with Pathwayscited by 5,326
- 2022InCoder: A Generative Model for Code Infilling and Synthesiscited by 498
- 2022Generating Sequences by Learning to Self-Correctcited by 277
- 2024When Can LLMs Actually Correct Their Own Mistakes? A Critical Survey of Self-Correction of LLMscited by 240
- 2023Is Self-Repair a Silver Bullet for Code Generation?cited by 197
- 2023OctoPack: Instruction Tuning Code Large Language Modelscited by 189
- 2023Baldur: Whole-Proof Generation and Repair with Large Language Modelscited by 119
- 2023A Survey on LLM-Generated Text Detection: Necessity, Methods, and Future Directionscited by 105
- 2022Repair Is Nearly Generation: Multilingual Program Repair with LLMscited by 68
- 2022Compilable Neural Code Generation with Compiler Feedbackcited by 47
- 2024From Code to Correctness: Closing the Last Mile of Code Generation with Hierarchical Debuggingcited by 46
- 2022Grammatical Error Correction: A Survey of the State of the Artcited by 43
12 most cited of 62 All 62 (JSON)
- 2026XSearch: Explainable Code Search via Concept-to-Code Alignment15 May 2026
- 2026How LLMs Fail and Generalize in RTL Coding for Hardware Design?26 Apr 2026
- 2026Precise Debugging Benchmark: Is Your Model Debugging or Regenerating?19 Apr 2026
- 2026Beyond Text-to-SQL: Can LLMs Really Debug Enterprise ETL SQL?26 Jan 2026
- 2025RepoDebug: Repository-Level Multi-Task and Multi-Language Debugging Evaluation of Large Language Models4 Sep 2025
- 2025The Impact of Fine-tuning Large Language Models on Automated Program Repair26 Jul 2025
- 2025Effective LLM Code Refinement via Property-Oriented and Structurally Minimal Feedback23 Jun 2025
- 2025Gradient-Based Program Repair: Fixing Bugs in Continuous Program Spaces23 May 2025
- 2025NL-Debugging: Exploiting Natural Language as an Intermediate Representation for Code Debugging21 May 2025
- 2025Semantic-Preserving Transformations as Mutation Operators: A Study on Their Effectiveness in Defect Detection30 Mar 2025
- 2025Where's the Bug? Attention Probing for Scalable Fault Localization19 Feb 2025
- 2025CLOVER: A Test Case Generation Benchmark with Coverage, Long-Context, and Verification12 Feb 2025
12 newest of 62 All 62 (JSON)