├── .gitignore ├── LICENSE ├── README.md └── figs └── dlapr.png /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | 131 | # Mac Finder 132 | .DS_Store 133 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 tamlhp 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Learning-based APR 2 | [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) 3 | [![arXiv](https://img.shields.io/badge/arXiv-2301.03270-b31b1b.svg)](https://arxiv.org/abs/2301.03270) 4 | ![GitHub stars](https://img.shields.io/github/stars/QuanjunZhang/AwesomeLearningAPR?color=yellow&label=Stars) 5 | ![visitor badge](https://visitor-badge.glitch.me/badge?page_id=%20QuanjunZhang.AwesomeLearningAPR) 6 | 7 | 🔥🔥🔥[2024-05-03] We have released a new paper about LLM4APR, [A Systematic Literature Review on Large Language Models for Automated Program Repair](https://arxiv.org/abs/2405.01466). Please refer to and 8 | 9 | 10 | 11 | 12 | A collection of academic publications, methodology, metrics and datasets on the subject of **automated program repair enhanced with deep/machine learning techniques**. 13 | 14 | 15 | 16 | We welcome all researchers to contribute to this repository and further contribute to the knowledge of the learning-based APR field. 17 | Please feel free to contact us if you have any related references by Github issue or pull request. 18 | 19 | ## Citation 20 | 21 | Please read and cite our paper: [![arXiv](https://img.shields.io/badge/arXiv-2301.03270-b31b1b.svg)](https://arxiv.org/abs/2301.03270) 22 | 23 | ``` 24 | @article{zhang2023survey, 25 | title = {A Survey of Learning-Based Automated Program Repair}, 26 | author = {Zhang, Quanjun and Fang, Chunrong and Ma, Yuxiang and Sun, Weisong and Chen, Zhenyu}, 27 | journal={ACM Transactions on Software Engineering and Methodology}, 28 | volume={33}, 29 | number={2}, 30 | pages={1--69}, 31 | year={2023}, 32 | publisher={ACM New York, NY} 33 | } 34 | ``` 35 | 36 | ---------- 37 | 38 | ## A Framework of Deep Learning-based APR 39 | ![dlapr](figs/dlapr.png) 40 | ---------- 41 | 42 | ## Collected Papers 43 | | **Paper Title** | **Venue** | **Year** | **Code Available**| 44 | | --------------- | ---- | ---- | --- | 45 | | [Neural Transfer Learning for Repairing Security Vulnerabilities in C Code](https://ieeexplore.ieee.org/abstract/document/9699412/) | _TSE_ | 2022 | [yes](https://github.com/SteveKommrusch/VRepair) | 46 | | [Vulrepair: A T5-based Automated Software Vulnerability Repair](https://dl.acm.org/doi/abs/10.1145/3540250.3549098) | _ESEC/FSE_ | 2022 |[yes](https://github.com/awsm-research/VulRepair)| 47 | | [Seqtrans: Automatic Vulnerability Fix Via Sequence to Sequence Learning](https://ieeexplore.ieee.org/abstract/document/9729554/) | _TSE_ | 2022 |[yes](https://github.com/chijianlei/SeqTrans)| 48 | | [Learning to Repair Software Vulnerabilities with Generative Adversarial Networks](https://proceedings.neurips.cc/paper/2018/hash/68abef8ee1ac9b664a90b0bbaff4f770-Abstract.html) | _NeurIPS_ | 2018 | no | 49 | | [Repairing Security Vulnerabilities Using Pre-trained Programming Language Models](https://ieeexplore.ieee.org/abstract/document/9833850/) | _DSNW_ | 2022 | no | 50 | | [Spvf: Security Property Assisted Vulnerability Fixing Via Attention-based Models](https://link.springer.com/article/10.1007/s10664-022-10216-4) | _ESE_ | 2022 | no | 51 | | [Vurle: Automatic Vulnerability Detection and Repair by Learning from Examples](https://link.springer.com/chapter/10.1007/978-3-319-66399-9_13) | _ESORICS_ | 2017 | no | 52 | | [Synshine: Improved Fixing of Syntax Errors](https://ieeexplore.ieee.org/abstract/document/9913705/) | _TSE_ | 2022 |[yes](https://zenodo.org/record/4572390#.Y4CY8xRByUk)| 53 | | [Deepfix: Fixing Common C Language Errors by Deep Learning](https://ojs.aaai.org/index.php/AAAI/article/view/10742) | _AAAI_ | 2017 | no | 54 | | [Break-it-fix-it: Unsupervised Learning for Program Repair](http://proceedings.mlr.press/v139/yasunaga21a.html) | _ICML_ | 2021 | [yes](https://github.com/michiyasunaga/bifi)| 55 | | [Tfix: Learning to Fix Coding Errors with a Text-to-text Transformer](http://proceedings.mlr.press/v139/berabi21a.html) | _ICML_ | 2021 |[yes](https://github.com/eth-sri/TFix)| 56 | | [Deepdelta: Learning to Repair Compilation Errors](https://dl.acm.org/doi/abs/10.1145/3338906.3340455) | _ESE/FSE_ | 2019 | no | 57 | | [Syntax and Sensibility: Using Language Models to Detect and Correct Syntax Errors](https://ieeexplore.ieee.org/abstract/document/8330219/) | _SANER_ | 2018 | no | 58 | | [Learning Lenient Parsing \& Typing Via Indirect Supervision](https://link.springer.com/article/10.1007/s10664-021-09942-y) | _ESE_ | 2021 | [yes](https://doi.org/10.5281/zenodo.3374019)| 59 | | [Deep Reinforcement Learning for Syntactic Error Repair in Student Programs](https://ojs.aaai.org/index.php/AAAI/article/view/3882) | _AAAI_ | 2019 | [yes](https://bitbucket.org/iiscseal/rlassist)| 60 | | [Neuro-symbolic Program Corrector for Introductory Programming Assignments](https://dl.acm.org/doi/abs/10.1145/3180155.3180219) | _ICSE_ | 2018 | no | 61 | | [Samplefix: Learning to Generate Functionally Diverse Fixes](https://link.springer.com/chapter/10.1007/978-3-030-93733-1_8) | _ECML_ | 2021 | no | 62 | | [Ggf: A graph-based method for programming language syntax error correction](https://dl.acm.org/doi/abs/10.1145/3387904.3389252) | _ICPC_ | 2020 | no | 63 | | [Compilation Error Repair: For the Student Programs, from the Student Programs](https://dl.acm.org/doi/abs/10.1145/3183377.3183383) | _ICSE-SEET_ | 2018 | no| 64 | | [Search, Align, and Repair: Data-driven Feedback Generation for Introductory Programming Exercises](https://dl.acm.org/doi/abs/10.1145/3192366.3192384) | _PLDI_ | 2018 | no| 65 | | [Dynamic Neural Program Embeddings for Program Repair](https://arxiv.org/abs/1711.07163) | _ICLR_ | 2018 |[yes](https://github.com/keowang/dynamic-program-embedding)| 66 | | [Repairing Bugs in Python Assignments Using Large Language Models](https://arxiv.org/abs/2209.14876) | _arxiv_ | 2021 | no | 67 | | [Verifix: Verified Repair of Programming Assignments](https://dl.acm.org/doi/abs/10.1145/3510418) | _TOSEM_ | 2022 | [yes](https://github.com/zhiyufan/Verifix)| 68 | | [Generating Concise Patches for Newly Released Programming Assignments](https://ieeexplore.ieee.org/abstract/document/9720157/) | _TSE_ | 2022 | no | 69 | | [Automated correction for syntax errors in programming assignments using recurrent neural networks](https://arxiv.org/abs/1603.06129) | _arxiv_ | 2016 | no | 70 | | [Improving Automatically Generated Code from Codex Via Automated Program Repair](https://arxiv.org/abs/2205.10583) | _arxiv_ | 2022 | no | 71 | | [Synthesize, Execute and Debug: Learning to Repair for Neural Program Synthesis](https://proceedings.neurips.cc/paper/2020/hash/cd0f74b5955dc87fd0605745c4b49ee8-Abstract.html) | _NeurIPS_ | 2020 | no | 72 | | [Detecting and Fixing Nonidiomatic Snippets in Python Source Code with Deep Learning](https://link.springer.com/chapter/10.1007/978-3-030-82193-7_9) | _ISC_ | 2021 | no | 73 | | [Getafix: Learning to Fix Bugs Automatically](https://dl.acm.org/doi/abs/10.1145/3360585) | _OOPSLA_ | 2019 | no | 74 | | [A Software-repair Robot Based on Continual Learning](https://ieeexplore.ieee.org/abstract/document/9393494/) | _IEEE Software_ | 2021 | [yes](https://github.com/repairnator/open-science-repairnator/tree/master/data/2020-r-hero) | 75 | | [Self-supervised Bug Detection and Repair](https://proceedings.neurips.cc/paper/2021/hash/ea96efc03b9a050d895110db8c4af057-Abstract.html) | _NeurIPS_ | 2021 | [yes](https://github.com/microsoft/neurips21-self-supervised-bug-detection-and-repair) | 76 | | [Deepdebug: Fixing Python Bugs Using Stack Traces, Backtranslation, and Code Skeletons](https://arxiv.org/abs/2105.09352) | _arxiv_ | 2021 | no | 77 | | [Generating Bug-fixes Using Pretrained Transformers](https://dl.acm.org/doi/abs/10.1145/3460945.3464951) | _MAPS_ | 2021 | no | 78 | | [Global Relational Models of Source Code](https://research.google/pubs/pub49316/) | _ICLR_ | 2019 | [yes](https://github.com/VHellendoorn/ICLR20-Great) | 79 | | [Fix Bugs with Transformer through a Neural-symbolic Edit Grammar](https://arxiv.org/abs/2204.06643) | _arxiv_ | 2022 | no | 80 | | [Grammar-based Patches Generation for Automated Program Repair](https://aclanthology.org/2021.findings-acl.111.pdf) | _ACL-IJCNLP_ | 2021 | no | 81 | | [Leveraging Causal Inference for Explainable Automatic Program Repair](https://ieeexplore.ieee.org/abstract/document/9892168/) | _arxiv_ | 2022 | no | 82 | | [Codebert: A Pre-trained Model for Programming and Natural Languages](https://arxiv.org/abs/2002.08155) | _EMNLP_ | 2020 | [yes](https://github.com/microsoft/CodeBERT) | 83 | | [Codet5: Identifier-aware Unified Pre-trained Encoder-decoder Models for Code Understanding and Generation](https://arxiv.org/abs/2109.00859) | _EMNLP_ | 2021 | [yes](https://github.com/salesforce/CodeT5) | 84 | | [Graphcodebert: Pre-training Code Representations with Data Flow](https://arxiv.org/abs/2009.08366) | _ICLR_ | 2021 | [yes](https://github.com/microsoft/CodeBERT) | 85 | | [Using Transfer Learning for Code-related Tasks](https://ieeexplore.ieee.org/abstract/document/9797060/) | _TSE_ | 2022 | [yes](https://github.com/antonio-mastropaolo/TransferLearning4Code) | 86 | | [Spt-code: Sequence-to-sequence Pre-training for Learning the Representation of Source Code](https://arxiv.org/abs/2201.01549) | _ICSE_ | 2022 | [yes](https://github.com/NougatCA/SPT-Code) | 87 | | [Circle: Continual Repair across Programming Languages](https://dl.acm.org/doi/abs/10.1145/3533767.3534219) | _ISSTA_ | 2022 | [yes](https://github.com/2022CIRCLE/CIRCLE) | 88 | | [On Multi-modal Learning of Editing Source Code](https://ieeexplore.ieee.org/abstract/document/9678559/) | _ASE_ | 2021 | no | 89 | | [Patch Generation with Language Models: Feasibility and Scaling Behavior](https://openreview.net/forum?id=rHlzJh_b1-5) | _ICLR-DL4C_ | 2022 | no | 90 | | [Can We Learn from Developer Mistakes? Learning to Localize and Repair Real Bugs from Real Bug Fixes](https://arxiv.org/abs/2207.00301) | _arxiv_ | 2022 | [yes](https://github.com/cedricrupb/nbfbaselines) | 91 | | [Coditt5: Pretraining for Source Code and Natural Language Editing](https://dl.acm.org/doi/abs/10.1145/3551349.3556955) | _ASE_ | 2022 | [yes](https://github.com/EngineeringSoftware/CoditT5) | 92 | | [Applying Codebert for Automated Program Repair of Java Simple Bugs](https://ieeexplore.ieee.org/abstract/document/9463106/) | _MSR_ | 2021 | [yes](https://github.com/EhsanMashhadi/MSR2021-ProgramRepair) | 93 | | [Towards Javascript Program Repair with Generative Pre-trained Transformer (gpt-2)](https://dl.acm.org/doi/abs/10.1145/3524459.3527350) | _APR_ | 2022 | [yes](https://github.com/RGAI-USZ/APR22-JS-GPT) | 94 | | [Can Openai's Codex Fix Bugs? An Evaluation on Quixbugs](https://dl.acm.org/doi/abs/10.1145/3524459.3527351) | _APR_ | 2022 | no | 95 | | [Glad: Neural Predicate Synthesis to Repair Omission Faults](https://arxiv.org/abs/2204.06771) | _arxiv_ | 2022 | no | 96 | | [Less Training, More Repairing Please: Revisiting Automated Program Repair Via Zero-shot Learning](https://dl.acm.org/doi/abs/10.1145/3540250.3549101) | _ESEC/FSE_ | 2022 | no | 97 | | [Automatic Patch Generation by Learning Correct Code](https://dl.acm.org/doi/abs/10.1145/2837614.2837617) | _POPL_ | 2016 | no | 98 | | [Program Repair with Repeated Learning](https://ieeexplore.ieee.org/abstract/document/9749899/) | _TSE_ | 2022 | no | 99 | | [Improving Fault Localization and Program Repair with Deep Semantic Features and Transferred Knowledge](https://dl.acm.org/doi/abs/10.1145/3510003.3510147) | _ICSE_ | 2022 | [yes](https://github.com/mxx1219/TRANSFER) | 100 | | [Improving Search-based Automatic Program Repair with Neural Machine Translation](https://ieeexplore.ieee.org/abstract/document/9749095/) | _IEEE Access_ | 2022 | no | 101 | | [Siturepair: Incorporating Machine-learning Fault Class Prediction to Inform Situational Multiple Fault Automatic Program Repair](https://www.sciencedirect.com/science/article/pii/S1874548222000178) | _IJCIP_ | 2022 | no | 102 | | [Dear: A Novel Deep Learning-based Approach for Automated Program Repair](https://dl.acm.org/doi/abs/10.1145/3510003.3510177) | _ICSE_ | 2022 | [yes](https://github.com/AutomatedProgramRepair-2021/dear-auto-fix) | 103 | | [Graphix: A Pre-trained Graph Edit Model for Automated Program Repair](https://openreview.net/forum?id=uB12zutkXJR) | __ | 2021 | no | 104 | | [Can We Automatically Fix Bugs by Learning Edit Operations?](https://ieeexplore.ieee.org/abstract/document/9825852/) | _SANER_ | 2022 | [yes](https://github.com/WM-SEMERU/hephaestus) | 105 | | [Language Models Can Prioritize Patches for Practical Program Patching](https://dl.acm.org/doi/abs/10.1145/3524459.3527343) | _APR_ | 2022 | no | 106 | | [Predicting Patch Correctness Based on the Similarity of Failing Test Cases](https://dl.acm.org/doi/abs/10.1145/3511096) | _TOSEM_ | 2022 | [yes](https://github.com/HaoyeTianCoder/BATS) | 107 | | [Defect Identification, Categorization, and Repair: Better Together](https://arxiv.org/abs/2204.04856) | _arxiv_ | 2022 | [yes](https://zenodo.org/record/5353354#.Y4CVdhRByUl) | 108 | | [Selfapr: Self-supervised Program Repair with Test Execution Diagnostics](https://arxiv.org/abs/2203.12755) | _ASE_ | 2022 | [yes](https://github.com/ASSERT-KTH/SelfAPR) | 109 | | [Crex: Predicting Patch Correctness in Automated Repair of C Programs through Transfer Learning of Execution Semantics](https://www.sciencedirect.com/science/article/pii/S0950584922001562) | _IST_ | 2022 | [yes](https://github.com/1993ryan/crex) | 110 | | [Bug-transformer: Automated Program Repair Using Attention-based Deep Neural Network](https://www.worldscientific.com/doi/abs/10.1142/S0218126622502103) | _JCSC_ | 2022 | no | 111 | | [Katana: Dual Slicing-based Context for Learning Bug Fixes](https://arxiv.org/abs/2205.00180) | _arxiv_ | 2022 | no | 112 | | [Oapr-homl'1: Optimal Automated Program Repair Approach Based on Hybrid Improved Grasshopper Optimization and Opposition Learning Based Artificial Neural Network](https://www.koreascience.or.kr/article/JAKO202213341729825.page) | _IJCSDS_ | 2022 | no | 113 | | [Repair Is Nearly Generation: Multilingual Program Repair with Llms](https://arxiv.org/abs/2208.11640) | _arxiv_ | 2022 | no | 114 | | [Practical Program Repair in the Era of Large Pre-trained Language Models](https://arxiv.org/abs/2210.14179) | _arxiv_ | 2022 | no | 115 | | [Context-aware Code Change Embedding for Better Patch Correctness Assessment](https://dl.acm.org/doi/abs/10.1145/3505247) | _TOSEM_ | 2022 | [yes](https://github.com/Ringbo/Cache) | 116 | | [Attention: Not Just Another Dataset for Patch-correctness Checking](https://arxiv.org/abs/2207.06590) | _arxiv_ | 2022 | [yes](https://github.com/anonymous0903/patch_correctness) | 117 | | [Is This Change the Answer to That Problem? Correlating Descriptions of Bug and Code Changes for Evaluating Patch Correctness](https://arxiv.org/abs/2208.04125) | _ASE_ | 2022 | [yes](https://github.com/Trustworthy-Software/Quatrain) | 118 | | [Patch Correctness Assessment in Automated Program Repair Based on the Impact of Patches on Production and Test Code](https://dl.acm.org/doi/abs/10.1145/3533767.3534368) | _ISSTA_ | 2022 | [yes](https://github.com/ali-ghanbari/shibboleth) | 119 | | [The Best of Both Worlds: Combining Learned Embeddings with Engineered Features for Accurate Prediction of Correct Patches](https://dl.acm.org/doi/abs/10.1145/3576039) | _TOSEM_ | 2022 | [yes](https://github.com/HaoyeTianCoder/Panther) | 120 | | [M3v: Multi-modal Multi-view Context Embedding for Repair Operator Prediction](https://ieeexplore.ieee.org/abstract/document/9741261/) | _CGO_ | 2022 | no | 121 | | [Identifying Incorrect Patches in Program Repair Based on Meaning of Source Code](https://ieeexplore.ieee.org/abstract/document/9690887/) | _IEEE Access_ | 2022 | [yes](https://github.com/ngocpq/MIPI) | 122 | | [Towards Boosting Patch Execution On-the-fly](https://dl.acm.org/doi/abs/10.1145/3510003.3510117) | _ICSE_ | 2022 | no | 123 | | [Cure: Code-aware Neural Machine Translation for Automatic Program Repair](https://ieeexplore.ieee.org/abstract/document/9401997/) | _ICSE_ | 2021 | no | 124 | | [A Syntax-guided Edit Decoder for Neural Program Repair](https://dl.acm.org/doi/abs/10.1145/3468264.3468544) | _ESEC/FSE_ | 2021 | [yes](https://github.com/pkuzqh/Recoder) | 125 | | [Sequencer: Sequence-to-sequence Learning for End-to-end Program Repair](https://ieeexplore.ieee.org/abstract/document/8827954/) | _TSE_ | 2019 | [yes](https://github.com/kth/SequenceR) | 126 | | [A Controlled Experiment of Different Code Representations for Learning-based Program Repair](https://linkspringer.53yu.com/article/10.1007/s10664-022-10223-5) | _ESE_ | 2022 | [yes](https://github.com/annon-reptory/reptory) | 127 | | [Neural Program Repair with Execution-based Backpropagation](https://dl.acm.org/doi/abs/10.1145/3510003.3510222) | _ICSE_ | 2022 | [yes](https://github.com/SophieHYe/RewardRepair) | 128 | | [A Bidirectional Lstm Language Model for Code Evaluation and Repair](https://www.mdpi.com/982256) | _SYM_ | 2021 | no | 129 | | [Grasp: Graph-to-sequence Learning for Automated Program Repair](https://ieeexplore.ieee.org/abstract/document/9724652/) | _QRS_ | 2021 | no | 130 | | [Jointly Learning to Repair Code and Generate Commit Message](https://arxiv.53yu.com/abs/2109.12296) | _arxiv_ | 2021 | no | 131 | | [Evaluating Large Language Models Trained on Code](https://arxiv.53yu.com/abs/2107.03374) | _arxiv_ | 2021 | [yes](https://github.com/openai/human-eval) | 132 | | [Automated Classification of Overfitting Patches with Statically Extracted Code Features](https://ieeexplore.ieee.org/abstract/document/9399306/) | _TSE_ | 2022 | [yes](https://github.com/SophieHYe/ODSExperiment) | 133 | | [Application of Seq2seq Models on Code Correction](https://frontiersin.yncjkj.com/articles/10.3389/frai.2021.590215/full) | _FRAI_ | 2021 | [yes](https://github.com/shan-huang-1993/PLC-Pyramid) | 134 | | [Exploring Plausible Patches using Source Code Embeddings in Javascript](https://ieeexplore.ieee.org/abstract/document/9474540/) | _APR_ | 2022 | no | 135 | | [Fast and Precise On-the-fly Patch Validation for All](https://ieeexplore.ieee.org/abstract/document/9402121/) | _ICSE_ | 2021 | no | 136 | | [How Does Regression Test Selection Affect Program Repair? An Extensive Study on 2 Million Patches](https://arxiv.53yu.com/abs/2105.07311) | _arxiv_ | 2021 | no | 137 | | [Coconut: Combining Context-aware Neural Translation Models Using Ensemble for Program Repair](https://dl.acm.org/doi/abs/10.1145/3395363.3397369) | _ISSTA_ | 2020 | [yes](https://github.com/lin-tan/CoCoNut-Artifact) | 138 | | [Dlfix: Context-based Code Transformation Learning for Automated Program Repair](https://dl.acm.org/doi/abs/10.1145/3377811.3380345) | _ICSE_ | 2020 | [yes](https://github.com/ICSE-2019-AUTOFIX/ICSE-2019-AUTOFIX) | 139 | | [Graph-based, Self-supervised Program Repair from Diagnostic Feedback](https://proceedings.mlr.press/v119/yasunaga20a.html) | _ICML_ | 2020 | [yes](https://github.com/michiyasunaga/DrRepair) | 140 | | [Human-in-the-loop Automatic Program Repair](https://ieeexplore.ieee.org/abstract/document/9159083/) | _ICST_ | 2020 | [yes](https://github.com/mboehme/learn2fix) | 141 | | [Hoppity: Learning Graph Transformations to Detect and Fix Bugs in Programs](https://par.nsf.gov/servlets/purl/10210341) | _ICLR_ | 2020 | no | 142 | | [Applying Deep Learning Algorithm to Automatic Bug Localization and Repair](https://dl.acm.org/doi/abs/10.1145/3341105.3374005) | _SAC_ | 2020 | no | 143 | | [Evaluating Representation Learning of Code Changes for Predicting Patch Correctness in Program Repair](https://dl.acm.org/doi/abs/10.1145/3324884.3416532) | _ASE_ | 2020 | [yes](https://github.com/TruX-DTF/DL4PatchCorrectness) | 144 | | [Patching As Translation: The Data and the Metaphor](https://dl.acm.org/doi/abs/10.1145/3324884.3416587) | _ASE_ | 2020 | [yes](https://github.com/ARiSE-Lab/Patch-as-translation) | 145 | | [Codit: Code Editing with Tree-based Neural Models](https://ieeexplore.ieee.org/abstract/document/9181462/) | _TSE_ | 2022 | no | 146 | | [Learning to Generate Corrective Patches Using Neural Machine Translation](https://arxiv.53yu.com/abs/1812.07170) | _arxiv_ | 2018 | no | 147 | | [On Learning Meaningful Code Changes Via Neural Machine Translation](https://ieeexplore.ieee.org/abstract/document/8811910/) | _ICSE_ | 2019 | [yes](https://sites.google.com/view/learning-codechanges) | 148 | | [Sorting and Transforming Program Repair Ingredients Via Deep Learning Code Similarities](https://ieeexplore.ieee.org/abstract/document/8668043/) | _SANER_ | 2019 | no | 149 | | [An Empirical Study on Learning Bug-fixing Patches in the Wild Via Neural Machine Translation](https://dl.acm.org/doi/abs/10.1145/3340544) | _TOSEM_ | 2019 | [yes](https://sites.google.com/view/learning-fixes) | 150 | | [Automatic Repair and Type Binding of Undeclared Variables Using Neural Networks](https://search.proquest.com/openview/8f87254364b7c7d94995d0119b177419/1?pq-origsite=gscholar&cbl=18750&diss=y) | __ | 2019 | no | 151 | | [Encore: Ensemble Learning Using Convolution Neural Machine Translation for Automatic Program Repair](https://arxiv.53yu.com/abs/1906.08691) | _arxiv_ | 2019 | no | 152 | | [Neural Program Repair by Jointly Learning to Localize and Repair](https://arxiv.53yu.com/abs/1904.01720) | _arxiv_ | 2019 | no | 153 | | [Sequence to Sequence Machine Learning for Automatic Program Repair](https://www.diva-portal.org/smash/record.jsf?pid=diva2:1330082) | __ | 2019 | no | 154 | | [Learning the Relation between Code Features and Code Transforms with Structured Prediction](https://arxiv.53yu.com/abs/1907.09282) | _arxiv_ | 2019 | no | 155 | | [Learning to Represent Edits](https://arxiv.53yu.com/abs/1810.13337) | _arxiv_ | 2018 | no | 156 | | [Dynamic Neural Program Embedding for Program Repair](https://arxiv.53yu.com/abs/1711.07163) | _arxiv_ | 2017 | [yes](https://github.com/keowang/dynamic-program-embedding) | 157 | | [Semantic Code Repair Using Neuro-symbolic Transformation Networks](https://arxiv.53yu.com/abs/1710.11054) | _arxiv_ | 2017 | [yes](https://iclr2018anon.github.io/semantic_code_repair/) | 158 | | [Automated Program Repair Using Genetic Programming and Model Checking](https://linkspringer.53yu.com/article/10.1007/s10489-016-0804-0) | _Applied Intelligence_ | 2016 | no | 159 | | []() | _arxiv_ | 2019 | no | 160 | 161 | 162 | ---------- 163 | 164 | ## Datasets 165 | * Some datasets are named after the model or author because these datasets do not have names 166 | 167 | | Dataset | Language | #Items | Test Case | #Papers Used | 168 | | :-- | --- | --- | --- | --- | 169 | | Bears | Java | 251 | yes | 2+ papers | 170 | | BFP medium | Java | 65454 | no | 9+ papers | 171 | | BFP samll | Java | 58350 | no | 9+ papers | 172 | | BigFix | Java | 1.824 M | no | 2+ papers | 173 | | Bugs2Fix | Java | 92849 | no | 2+ papers | 174 | | Bugs.jar | Java | 1158 | yes | 3+ papers | 175 | | Code-Change-Data | Java | 44372 | no | 1+ papers | 176 | | CodeXGlue | Java | 122 K | no | 1+ papers | 177 | | CodRep | Java | 58069 | no | 2+ papers | 178 | | CPatMiner | Java | 44 K | no | 1+ papers | 179 | | DeepRepair | Java | 374 | no | 1+ papers | 180 | | Defects4J | Java | 835 | yes | 11+ papers | 181 | | Function-SStuBs4J | Java | 21047 | no | 1+ papers | 182 | | IntroClassJava | Java | 998 | yes | 2+ papers | 183 | | Java-med | Java | 7454 | no | 1+ papers | 184 | | ManySStuBs4J large | Java | 63923 | no | 1+ papers | 185 | | ManySStuBs4J small | Java | 10231 | no | 2+ papers | 186 | | MegaDiff | Java | 663029 | no | 1+ papers | 187 | | Ponta | Java | 624 | no | 1+ papers | 188 | | Pull-Request-Data | Java | 10666 | no | 2+ papers | 189 | | Ratchet | Java | 35 K | no | 1+ papers | 190 | | Recoder | Java | 103585 | no | 1+ papers | 191 | | TRANSFER | Java | 408091 | no | 1+ papers | 192 | | Mesbah | Java | 4.8 M | no | 1+ papers | 193 | | AOJ | C | 2482 | no | 1+ papers | 194 | | Big-Vul | C | 3745 | no | 1+ papers | 195 | | Code4Bench | C | 25 K | yes | 1+ papers | 196 | | CodeHunt | C | 195 K | yes | 1+ papers | 197 | | CVEFixes | C | | 8482 | 2+ papers | 198 | | DeepFix | C | 6971 | yes | 6+ papers | 199 | | ManyBugs | C | 185 | yes | 3+ papers | 200 | | Prophet | C | 69 | yes | 2+ papers | 201 | | Prutor | C | 6971 | yes | 2+ papers | 202 | | BugAID | JS | 105133 | no | 4+ papers | 203 | | BugsJS | JS | 453 | yes | 1+ papers | 204 | | HOPPITY | JS | 363 K | no | 1+ papers | 205 | | KATANA | JS | 114 K | no | 1+ papers | 206 | | REPTORY | JS | 407 K | no | 1+ papers | 207 | | TFix | JS | 100 K | no | 1+ papers | 208 | | ETH Py150 | Python | 150 K | no | 3+ papers | 209 | | GitHub-Python | Python | 3 M | no | 1+ papers | 210 | | Mester | Python | 13 K | no | 1+ papers | 211 | | PyPIBug | Python | 2374 | no | 2+ papers | 212 | | SSB-9M | Python | 9 M | no | 1+ papers | 213 | | VUDENC | Python | 10 K | no | 1+ papers | 214 | | Chhatbar | Python | 286 | yes | 1+ papers | 215 | | SPoC | C++ | 18356 | yes | 1+ papers | 216 | | QuixBugs | Java,Python | 40 | yes | 11+ papers | 217 | | DeepDebug | Java,Python | 523 | no | 2+ papers | 218 | | MSR20 | C,C++ | 188K | no | 1+ papers | 219 | | CoCoNut | Java,C,JS,Python | 24 M | yes | 4+ papers | 220 | | CodeFlaw | C,Python | 3902 | yes | 3+ papers | 221 | | ENCORE | Java,C++,JS,Python | 9.2 M | no | 1+ papers | 222 | 223 | 224 | 225 | ---------- 226 | ## Evaluation Metrics 227 | | Metrics | Formula/Description | 228 | | ---- | ---- | 229 | | Accuracy | Accuracy measures the percentage of candidate patches in which the sequence predicted by the model equals the ground truth | 230 | | BLEU | BLUE score measures how similar the predicted candidate patch and the ground truth is | 231 | | Compilable Patch | Such a candidate patch makes the patched buggy program compile successfully | 232 | | Plausible Patch | Such a compilable patch fixes the buggy functionality without harming existing functionality (i.e., passing all available test suites) | 233 | | Correct Patch | Such a plausible patch is semantically or syntactically equivalent to the developer patch (i.e., generalizing the potential test suite) | 234 | 235 | 236 | 237 | -------------------------------------------------------------------------------- /figs/dlapr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iSEngLab/AwesomeLearningAPR/5d2c347163d962b4ef334f2908ed764fc6a60f02/figs/dlapr.png --------------------------------------------------------------------------------