skip to main content
survey

Evolving Paradigms in Automated Program Repair: Taxonomy, Challenges, and Opportunities

Published: 10 October 2024 Publication History

Abstract

With the rapid development and large-scale popularity of program software, modern society increasingly relies on software systems. However, the problems exposed by software have also come to the fore. The software bug has become an important factor troubling developers. In this context, Automated Program Repair (APR) techniques have emerged, aiming to automatically fix software bug problems and reduce manual debugging work. In particular, benefiting from the advances in deep learning, numerous learning-based APR techniques have emerged in recent years, which also bring new opportunities for APR research. To give researchers a quick overview of APR techniques’ complete development and future opportunities, we review the evolution of APR techniques and discuss in depth the latest advances in APR research. In this article, the development of APR techniques is introduced in terms of four different patch generation schemes: search-based, constraint-based, template-based, and learning-based. Moreover, we propose a uniform set of criteria to review and compare each APR tool and then discuss the current state of APR development. Finally, we analyze current challenges and future directions, especially highlighting the critical opportunities that large language models bring to APR research.

References

[1]
Afsoon Afzal, Manish Motwani, Kathryn T. Stolee, Yuriy Brun, and Claire Le Goues. 2021. SOSRepair: Expressive semantic search for real-world program repair. Trans. Softw. Eng. 47, 10 (2021), 2162–2181.
[2]
Fatmah Yousef Assiri and James M. Bieman. 2014. An assessment of the quality of automated program operator repair. In ICST. 273–282.
[3]
Johannes Bader, Andrew Scott, Michael Pradel, and Satish Chandra. 2019. Getafix: Learning to fix bugs automatically. Proc. ACM Program. Lang. 3, OOPSLA (2019), 159:1–159:27.
[4]
Samuel Benton, Yuntong Xie, Lan Lu, Mengshi Zhang, Xia Li, and Lingming Zhang. 2022. Towards boosting patch execution on-the-fly. In ICSE. 2165–2176.
[5]
Marcel Böhme, Charaka Geethal, and Van-Thuan Pham. 2020. Human-in-the-loop automatic program repair. In ICST. 274–285.
[6]
Diogo Campos, André Restivo, Hugo Sereno Ferreira, and Afonso Ramos. 2021. Automatic program repair as semantic suggestions: An empirical study. In ICST. 217–228.
[7]
Lingchao Chen, Yicheng Ouyang, and Lingming Zhang. 2021. Fast and precise on-the-fly patch validation for all. In ICSE. 1123–1134.
[8]
Liushan Chen, Yu Pei, and Carlo A. Furia. 2017. Contract-based program repair without the contracts. In ASE. 637–647.
[9]
Liushan Chen, Yu Pei, and Carlo A. Furia. 2021. Contract-based program repair without the contracts: An extended study. Trans. Softw. Eng. 47, 12 (2021), 2841–2857.
[10]
Liushan Chen, Yu Pei, Minxue Pan, Tian Zhang, Qixin Wang, and Carlo A. Furia. 2023. Program repair with repeated learning. Trans. Softw. Eng. 49, 2 (2023), 831–848.
[11]
Zimin Chen, Steve Kommrusch, and Martin Monperrus. 2023. Neural transfer learning for repairing security vulnerabilities in C code. Trans. Softw. Eng. 49, 1 (2023), 147–165.
[12]
Zimin Chen, Steve Kommrusch, Michele Tufano, Louis-Noël Pouchet, Denys Poshyvanyk, and Martin Monperrus. 2021. SequenceR: Sequence-to-sequence learning for end-to-end program repair. Trans. Softw. Eng. 47, 9 (2021), 1943–1959.
[13]
Jianlei Chi, Yu Qu, Ting Liu, Qinghua Zheng, and Heng Yin. 2023. SeqTrans: Automatic vulnerability fix via sequence to sequence learning. Trans. Softw. Eng. 49, 2 (2023), 564–585.
[14]
Aidan Connor, Aaron Harris, Nathan Cooper, and Denys Poshyvanyk. 2022. Can we automatically fix bugs by learning edit operations? In SANER. 782–792.
[15]
Vidroha Debroy and W. Eric Wong. 2010. Using mutation to automatically suggest fixes for faulty programs. In ICST. 65–74.
[16]
Thomas Durieux, Fernanda Madeiral, Matias Martinez, and Rui Abreu. 2019. Empirical review of Java program repair tools: A large-scale experiment on 2,141 bugs and 23,551 repair attempts. In FSE. 302–313.
[17]
Zhiyu Fan, Xiang Gao, Martin Mirchev, Abhik Roychoudhury, and Shin Hwei Tan. 2023. Automated repair of programs from large language models. In ICSE. 1469–1481.
[18]
Michael Fu, Chakkrit Tantithamthavorn, Trung Le, Van Nguyen, and Dinh Phung. 2022. VulRepair: A T5-based automated software vulnerability repair. In FSE. 935–947.
[19]
Xiang Gao, Bo Wang, Gregory J. Duck, Ruyi Ji, Yingfei Xiong, and Abhik Roychoudhury. 2021. Beyond tests: Program vulnerability repair via crash constraint extraction. ACM Trans. Softw. Eng. Methodol. 30, 2 (2021), 14:1–14:27.
[20]
Luca Gazzola, Daniela Micucci, and Leonardo Mariani. 2019. Automatic software repair: A survey. Trans. Softw. Eng. 45, 1 (2019), 34–67.
[21]
Ali Ghanbari, Samuel Benton, and Lingming Zhang. 2019. Practical program repair via bytecode mutation. In ISSTA. 19–30.
[22]
Claire Le Goues, Michael Dewey-Vogt, Stephanie Forrest, and Westley Weimer. 2012. A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each. In ICSE. 3–13.
[23]
Claire Le Goues, ThanhVu Nguyen, Stephanie Forrest, and Westley Weimer. 2012. GenProg: A generic method for automatic software repair. Trans. Softw. Eng. 38, 1 (2012), 54–72.
[24]
Claire Le Goues, Michael Pradel, and Abhik Roychoudhury. 2019. Automated program repair. Commun. ACM 62, 12 (2019), 56–65.
[25]
Timothy M. Hospedales, Antreas Antoniou, Paul Micaelli, and Amos J. Storkey. 2022. Meta-learning in neural networks: A survey. IEEE Trans. Pattern Anal. Mach. Intell. 44, 9 (2022), 5149–5169.
[26]
Jinru Hua, Mengshi Zhang, Kaiyuan Wang, and Sarfraz Khurshid. 2018. Towards practical program repair with on-demand candidate generation. In ICSE. 12–23.
[27]
Kai Huang, Xiangxin Meng, Jian Zhang, Yang Liu, Wenjie Wang, Shuhao Li, and Yuqing Zhang. 2023. An empirical study on fine-tuning large language models of code for automated program repair. In ASE. 1162–1174.
[28]
Jiajun Jiang, Luyao Ren, Yingfei Xiong, and Lingming Zhang. 2019. Inferring program transformations from singular examples via big code. In ASE. 255–266.
[29]
Jiajun Jiang, Yingfei Xiong, Hongyu Zhang, Qing Gao, and Xiangqun Chen. 2018. Shaping program repair space with existing patches and similar code. In ISSTA. 298–309.
[30]
Nan Jiang, Kevin Liu, Thibaud Lutellier, and Lin Tan. 2023. Impact of code language models on automated program repair. In ICSE. 1430–1442.
[31]
Nan Jiang, Thibaud Lutellier, Yiling Lou, Lin Tan, Dan Goldwasser, and Xiangyu Zhang. 2023. KNOD: Domain knowledge distilled tree decoder for automated program repair. In ICSE. 1251–1263.
[32]
Nan Jiang, Thibaud Lutellier, and Lin Tan. 2021. CURE: Code-aware neural machine translation for automatic program repair. In ICSE. 1161–1173.
[33]
Matthew Jin, Syed Shahriar, Michele Tufano, Xin Shi, Shuai Lu, Neel Sundaresan, and Alexey Svyatkovskiy. 2023. InferFix: End-to-end program repair with LLMs. In FSE.
[34]
Barbara Jobstmann, Andreas Griesmayer, and Roderick Bloem. 2005. Program repair as a game. In CAV, Vol. 3576. 226–238.
[35]
René Just, Darioush Jalali, and Michael D. Ernst. 2014. Defects4J: A database of existing faults to enable controlled testing studies for Java programs. In ISSTA. 437–440.
[36]
Yalin Ke, Kathryn T. Stolee, Claire Le Goues, and Yuriy Brun. 2015. Repairing programs with semantic code search (T). In ASE. 295–306.
[37]
Dongsun Kim, Jaechang Nam, Jaewoo Song, and Sunghun Kim. 2013. Automatic patch generation learned from human-written patches. In ICSE. 802–811.
[38]
Jindae Kim and Sunghun Kim. 2019. Automatic patch generation with context-based change application. Empir. Softw. Eng. 24, 6 (2019), 4071–4106.
[39]
Misoo Kim, Youngkyoung Kim, Hohyeon Jeong, Jinseok Heo, Sungoh Kim, Hyunhee Chung, and Eunseok Lee. 2022. An empirical study of deep transfer learning-based program repair for Kotlin projects. In FSE. 1441–1452.
[40]
Etienne Kneuss, Manos Koukoutos, and Viktor Kuncak. 2015. Deductive program repair. In CAV, Vol. 9207. 217–233.
[41]
Anil Koyuncu, Kui Liu, Tegawendé F. Bissyandé, Dongsun Kim, Jacques Klein, Martin Monperrus, and Yves Le Traon. 2020. FixMiner: Mining relevant fix patterns for automated program repair. Empir. Softw. Eng. 25, 3 (2020), 1980–2024.
[42]
Anil Koyuncu, Kui Liu, Tegawendé F. Bissyandé, Dongsun Kim, Martin Monperrus, Jacques Klein, and Yves Le Traon. 2019. iFixR: Bug report driven program repair. In FSE. 314–325.
[43]
Xuan-Bach Dinh Le, Duc-Hiep Chu, David Lo, Claire Le Goues, and Willem Visser. 2017. S3: Syntax- and semantic-guided repair synthesis via programming by examples. In FSE. 593–604.
[44]
Xuan-Bach Dinh Le, David Lo, and Claire Le Goues. 2016. History driven program repair. In SANER. 213–224.
[45]
Xuan-Bach Dinh Le, Ferdian Thung, David Lo, and Claire Le Goues. 2018. Overfitting in semantics-based automated program repair. Empir. Softw. Eng. 23, 5 (2018), 3007–3033.
[46]
Junhee Lee, Seongjoon Hong, and Hakjoo Oh. 2018. MemFix: Static analysis-based repair of memory deallocation errors for C. In FSE. 95–106.
[47]
Junhee Lee, Seongjoon Hong, and Hakjoo Oh. 2022. NPEX: Repairing Java null pointer exceptions without tests. In ICSE. 1532–1544.
[48]
Frank Li and Vern Paxson. 2017. A large-scale empirical study of security patches. In CCS. 2201–2215.
[49]
Xueyang Li, Shangqing Liu, Ruitao Feng, Guozhu Meng, Xiaofei Xie, Kai Chen, and Yang Liu. 2022. TransRepair: Context-aware program repair for compilation errors. In ASE. 1–13.
[50]
Yi Li, Shaohua Wang, and Tien N. Nguyen. 2020. DLFix: Context-based code transformation learning for automated program repair. In ICSE. 602–614.
[51]
Yi Li, Shaohua Wang, and Tien N. Nguyen. 2022. DEAR: A novel deep learning-based approach for automated program repair. In ICSE. 511–523.
[52]
Jiaxing Liu, Chaofeng Sha, and Xin Peng. 2023. An empirical study of parameter-efficient fine-tuning methods for pre-trained code models. In ASE. 397–408.
[53]
Kui Liu, Dongsun Kim, Tegawendé F. Bissyandé, Shin Yoo, and Yves Le Traon. 2021. Mining fix patterns for FindBugs violations. Trans. Softw. Eng. 47, 1 (2021), 165–188.
[54]
Kui Liu, Anil Koyuncu, Tegawendé F. Bissyandé, Dongsun Kim, Jacques Klein, and Yves Le Traon. 2019. You cannot fix what you cannot find! An investigation of fault localization bias in benchmarking automated program repair systems. In ICST. 102–113.
[55]
Kui Liu, Anil Koyuncu, Dongsun Kim, and Tegawendé F. Bissyandé. 2019. AVATAR: Fixing semantic bugs with fix patterns of static analysis violations. In SANER. 456–467.
[56]
Kui Liu, Anil Koyuncu, Dongsun Kim, and Tegawendé F. Bissyandé. 2019. TBar: Revisiting template-based automated program repair. In ISSTA. 31–42.
[57]
Kui Liu, Li Li, Anil Koyuncu, Dongsun Kim, Zhe Liu, Jacques Klein, and Tegawendé F. Bissyandé. 2021. A critical review on the evaluation of automated program repair systems. J. Syst. Softw. 171 (2021), 110817.
[58]
Kui Liu, Shangwen Wang, Anil Koyuncu, Kisub Kim, Tegawendé F. Bissyandé, Dongsun Kim, Peng Wu, Jacques Klein, Xiaoguang Mao, and Yves Le Traon. 2020. On the efficiency of test suite based program repair: A systematic assessment of 16 automated repair systems for Java programs. In ICSE. 615–627.
[59]
Kui Liu, Jingtang Zhang, Li Li, Anil Koyuncu, Dongsun Kim, Chunpeng Ge, Zhe Liu, Jacques Klein, and Tegawendé F. Bissyandé. 2023. Reliable fix patterns inferred from static checkers for automated program repair. ACM Trans. Softw. Eng. Methodol. 32, 4 (2023), 96:1–96:38.
[60]
Xuliang Liu and Hao Zhong. 2018. Mining stackoverflow for program repair. In SANER. 118–129.
[61]
Yu Liu, Sergey Mechtaev, Pavle Subotic, and Abhik Roychoudhury. 2023. Program repair guided by datalog-defined static analysis. In FSE.
[62]
Fan Long, Peter Amidon, and Martin Rinard. 2017. Automatic inference of code transforms for patch generation. In FSE. 727–739.
[63]
Fan Long and Martin Rinard. 2016. Automatic patch generation by learning correct code. In POPL. 298–312.
[64]
Yiling Lou, Ali Ghanbari, Xia Li, Lingming Zhang, Haotian Zhang, Dan Hao, and Lu Zhang. 2020. Can automated program repair refine fault localization? A unified debugging approach. In ISSTA. 75–87.
[65]
Thibaud Lutellier, Hung Viet Pham, Lawrence Pang, Yitong Li, Moshi Wei, and Lin Tan. 2020. CoCoNuT: Combining context-aware neural translation models using ensemble for program repair. In ISSTA. 101–114.
[66]
Alexandru Marginean, Johannes Bader, Satish Chandra, Mark Harman, Yue Jia, Ke Mao, Alexander Mols, and Andrew Scott. 2019. SapFix: Automated end-to-end repair at scale. In ICSE. 269–278.
[67]
Matias Martinez, Silverio Martínez-Fernández, and Xavier Franch. 2022. Energy consumption of automated program repair. arXiv preprint arXiv:2211.12104 (2022).
[68]
Matias Martinez and Martin Monperrus. 2015. Mining software repair models for reasoning on the search space of automated program fixing. Empir. Softw. Eng. 20, 1 (2015), 176–205.
[69]
Matias Martinez and Martin Monperrus. 2016. Astor: A program repair library for Java. In ISSTA. 441–444.
[70]
Sergey Mechtaev, Xiang Gao, Shin Hwei Tan, and Abhik Roychoudhury. 2018. Test-equivalence analysis for automatic patch generation. ACM Trans. Softw. Eng. Methodol. 27, 4 (2018), 15:1–15:37.
[71]
Sergey Mechtaev, Manh-Dung Nguyen, Yannic Noller, Lars Grunske, and Abhik Roychoudhury. 2018. Semantic program repair using a reference implementation. In ICSE. 129–139.
[72]
Sergey Mechtaev, Jooyong Yi, and Abhik Roychoudhury. 2015. DirectFix: Looking for simple program repairs. In ICSE. 448–458.
[73]
Sergey Mechtaev, Jooyong Yi, and Abhik Roychoudhury. 2016. Angelix: Scalable multiline program patch synthesis via symbolic analysis. In ICSE. 691–701.
[74]
Xiangxin Meng, Xu Wang, Hongyu Zhang, Hailong Sun, and Xudong Liu. 2022. Improving fault localization and program repair with deep semantic features and transferred knowledge. In ICSE. 1169–1180.
[75]
Xiangxin Meng, Xu Wang, Hongyu Zhang, Hailong Sun, Xudong Liu, and Chunming Hu. 2023. Template-based neural program repair. In ICSE. 1456–1468.
[76]
Martin Monperrus. 2014. A critical review of “automatic patch generation learned from human-written patches”: Essay on the problem statement and the evaluation of automatic software repair. In ICSE. 234–242.
[77]
Martin Monperrus. 2018. Automatic software repair: A bibliography. ACM Comput. Surv. 51, 1 (2018), 1–24.
[78]
Martin Monperrus. 2018. The Living Review on Automated Program Repair. [Technical Report] hal-01956501, HAL Archives Ouvertes. 2018.
[79]
Marjane Namavar, Noor Nashid, and Ali Mesbah. 2022. A controlled experiment of different code representations for learning-based program repair. Empir. Softw. Eng. 27, 7 (2022), 190.
[80]
Noor Nashid, Mifta Sintaha, and Ali Mesbah. 2023. Embedding context as code dependencies for neural program repair. In ICST. 95–106.
[81]
Hoang Duong Thien Nguyen, Dawei Qi, Abhik Roychoudhury, and Satish Chandra. 2013. SemFix: Program repair via semantic analysis. In ICSE. 772–781.
[82]
Thanh-Toan Nguyen, Quang-Trung Ta, and Wei-Ngan Chin. 2019. Automatic program repair using formal verification and expression templates. In VMCAI, Vol. 11388. 70–91.
[83]
Amirfarhad Nilizadeh, Gary T. Leavens, Xuan-Bach Dinh Le, Corina S. Pasareanu, and David R. Cok. 2021. Exploring true test overfitting in dynamic automated program repair using formal methods. In ICST. 229–240.
[84]
Wonseok Oh and Hakjoo Oh. 2022. PyTER: Effective program repair for Python type errors. In FSE. 922–934.
[85]
Peter W. O’Hearn. 2019. Separation logic. Commun. ACM 62, 2 (2019), 86–95.
[86]
Kai Pan, Sunghun Kim, and E. James Whitehead Jr.2009. Toward an understanding of bug fix patterns. Empir. Softw. Eng. 14, 3 (2009), 286–315.
[87]
Nikhil Parasaram, Earl T. Barr, and Sergey Mechtaev. 2022. Trident: Controlling side effects in automated program repair. Trans. Softw. Eng. 48, 12 (2022), 4717–4732.
[88]
Nikhil Parasaram, Earl T. Barr, and Sergey Mechtaev. 2023. Rete: Learning namespace representation for program repair. In ICSE. 1264–1276.
[89]
Hammond Pearce, Benjamin Tan, Baleegh Ahmad, Ramesh Karri, and Brendan Dolan-Gavitt. 2022. Examining zero-shot vulnerability repair with large language models. In SP. 1–18.
[90]
Yu Pei, Carlo A. Furia, Martin Nordio, Yi Wei, Bertrand Meyer, and Andreas Zeller. 2014. Automated fixing of programs with contracts. Trans. Softw. Eng. 40, 5 (2014), 427–449.
[91]
Yun Peng, Shuzheng Gao, Cuiyun Gao, Yintong Huo, and Michael Lyu. 2024. Domain knowledge matters: Improving prompts with fix templates for repairing Python type errors. In ICSE.
[92]
Yihao Qin, Shangwen Wang, Kui Liu, Xiaoguang Mao, and Tegawendé F. Bissyandé. 2021. On the impact of flaky tests in automated program repair. In SANER. 295–306.
[93]
Bat-Chen Rothenberg and Orna Grumberg. 2016. Sound and complete mutation-based program repair. In FM, Vol. 9995. 593–611.
[94]
Ripon K. Saha, Yingjun Lyu, Hiroaki Yoshida, and Mukul R. Prasad. 2017. ELIXIR: Effective object oriented program repair. In ASE. 648–659.
[95]
Seemanta Saha, Ripon K. Saha, and Mukul R. Prasad. 2019. Harnessing evolution for multi-hunk program repair. In ICSE. 13–24.
[96]
Ridwan Salihin Shariffdeen, Shin Hwei Tan, Mingyuan Gao, and Abhik Roychoudhury. 2021. Automated patch transplantation. ACM Trans. Softw. Eng. Methodol. 30, 1 (2021), 6:1–6:36.
[97]
Mifta Sintaha, Noor Nashid, and Ali Mesbah. 2023. Katana: Dual slicing based context for learning bug fixes. ACM Trans. Softw. Eng. Methodol. 32, 4 (2023), 100:1–100:27.
[98]
Edward K. Smith, Earl T. Barr, Claire Le Goues, and Yuriy Brun. 2015. Is the cure worse than the disease? Overfitting in automated program repair. In FSE. 532–543.
[99]
Michele Tufano, Cody Watson, Gabriele Bavota, Massimiliano Di Penta, Martin White, and Denys Poshyvanyk. 2019. An empirical study on learning bug-fixing patches in the wild via neural machine translation. ACM Trans. Softw. Eng. Methodol. 28, 4 (2019), 19:1–19:29.
[100]
Rijnard van Tonder and Claire Le Goues. 2018. Static automated program repair for heap properties. In ICSE. 151–162.
[101]
Shangwen Wang, Ming Wen, Bo Lin, Hongjun Wu, Yihao Qin, Deqing Zou, Xiaoguang Mao, and Hai Jin. 2020. Automated patch correctness assessment: How far are we? In ASE. 968–980.
[102]
Weishi Wang, Yue Wang, Shafiq Joty, and Steven C. H. Hoi. 2023. RAP-Gen: Retrieval-augmented patch generation with CodeT5 for automatic program repair. In FSE.
[103]
Cody Watson, Michele Tufano, Kevin Moran, Gabriele Bavota, and Denys Poshyvanyk. 2020. On learning meaningful assert statements for unit test cases. In ICSE. 1398–1409.
[104]
Yuxiang Wei, Chunqiu Steven Xia, and Lingming Zhang. 2023. Copiloting the copilots: Fusing large language models with completion engines for automated program repair. In FSE.
[105]
Westley Weimer, Zachary P. Fry, and Stephanie Forrest. 2013. Leveraging program equivalence for adaptive program repair: Models and first results. In ASE. 356–366.
[106]
Westley Weimer, ThanhVu Nguyen, Claire Le Goues, and Stephanie Forrest. 2009. Automatically finding patches using genetic programming. In ICSE. 364–374.
[107]
Ming Wen, Junjie Chen, Rongxin Wu, Dan Hao, and Shing-Chi Cheung. 2018. Context-aware patch generation for better automated program repair. In ICSE. 1–11.
[108]
Martin White, Michele Tufano, Matias Martinez, Martin Monperrus, and Denys Poshyvanyk. 2019. Sorting and transforming program repair ingredients via deep learning code similarities. In SANER. 479–490.
[109]
Chu-Pan Wong, Priscila Santiesteban, Christian Kästner, and Claire Le Goues. 2021. VarFix: Balancing edit expressiveness and search effectiveness in automated program repair. In FSE. 354–366.
[110]
Yi Wu, Nan Jiang, Hung Viet Pham, Thibaud Lutellier, Jordan Davis, Lin Tan, Petr Babkin, and Sameena Shah. 2023. How effective are neural networks for fixing security vulnerabilities. In ISSTA. 1282–1294.
[111]
Chunqiu Steven Xia, Yifeng Ding, and Lingming Zhang. 2023. The plastic surgery hypothesis in the era of large language models. In ASE. 522–534.
[112]
Chunqiu Steven Xia, Yuxiang Wei, and Lingming Zhang. 2023. Automated program repair in the era of large pre-trained language models. In ICSE. 1482–1494.
[113]
Chunqiu Steven Xia and Lingming Zhang. 2022. Less training, more repairing please: Revisiting automated program repair via zero-shot learning. In FSE. 959–971.
[114]
Qi Xin and Steven P. Reiss. 2017. Leveraging syntax-related code for automated program repair. In ASE. 660–670.
[115]
Yingfei Xiong and Bo Wang. 2022. L2S: A framework for synthesizing the most probable program under a specification. ACM Trans. Softw. Eng. Methodol. 31, 3 (2022), 34:1–34:45.
[116]
Yingfei Xiong, Jie Wang, Runfa Yan, Jiachen Zhang, Shi Han, Gang Huang, and Lu Zhang. 2017. Precise condition synthesis for program repair. In ICSE. 416–426.
[117]
Tongtong Xu, Liushan Chen, Yu Pei, Tian Zhang, Minxue Pan, and Carlo A. Furia. 2022. Restore: Retrospective fault localization enhancing automated program repair. Trans. Softw. Eng. 48, 2 (2022), 309–326.
[118]
Xuezheng Xu, Yulei Sui, Hua Yan, and Jingling Xue. 2019. VFix: Value-flow-guided precise program repair for null pointer dereferences. In ICSE. 512–523.
[119]
Jifeng Xuan, Matias Martinez, Favio Demarco, Maxime Clement, Sebastian R. Lamelas Marcote, Thomas Durieux, Daniel Le Berre, and Martin Monperrus. 2017. Nopol: Automatic repair of conditional statement bugs in Java programs. Trans. Softw. Eng. 43, 1 (2017), 34–55.
[120]
Deheng Yang, Yan Lei, Xiaoguang Mao, David Lo, Huan Xie, and Meng Yan. 2021. Is the ground truth really accurate? Dataset purification for automated program repair. In SANER. 96–107.
[121]
Deheng Yang, Yan Lei, Xiaoguang Mao, Yuhua Qi, and Xin Yi. 2023. Seeing the whole elephant: Systematically understanding and uncovering evaluation biases in automated program repair. ACM Trans. Softw. Eng. Methodol. 32, 3 (2023), 65:1–65:37.
[122]
Jinqiu Yang, Alexey Zhikhartsev, Yuefei Liu, and Lin Tan. 2017. Better test cases for better automated program repair. In FSE. 831–841.
[123]
He Ye, Matias Martinez, Xiapu Luo, Tao Zhang, and Martin Monperrus. 2022. SelfAPR: Self-supervised program repair with test execution diagnostics. In ASE. 92:1–92:13.
[124]
He Ye, Matias Martinez, and Martin Monperrus. 2021. Automated patch assessment for program repair at scale. Empir. Softw. Eng. 26, 2 (2021), 20.
[125]
He Ye, Matias Martinez, and Martin Monperrus. 2022. Neural program repair with execution-based backpropagation. In ICSE. 1506–1518.
[126]
He Ye and Martin Monperrus. 2024. ITER: Iterative neural repair for multi-location patches. In ICSE.
[127]
Hiroaki Yoshida, Rohan Bavishi, Keisuke Hotta, Yusuke Nemoto, Mukul R. Prasad, and Shinji Kikuchi. 2020. Phoenix: A tool for automated data-driven synthesis of repairs for static analysis violations. In ICSE. 53–56.
[128]
Wei Yuan, Quanjun Zhang, Tieke He, Chunrong Fang, Nguyen Quoc Viet Hung, Xiaodong Hao, and Hongzhi Yin. 2022. CIRCLE: Continual repair across programming languages. In ISSTA. 678–690.
[129]
Yuan Yuan and Wolfgang Banzhaf. 2020. ARJA: Automated repair of Java programs via multi-objective genetic programming. Trans. Softw. Eng. 46, 10 (2020), 1040–1067.
[130]
Yuan Yuan and Wolfgang Banzhaf. 2020. Toward better evolutionary program repair: An integrated approach. ACM Trans. Softw. Eng. Methodol. 29, 1 (2020), 5:1–5:53.
[131]
Quanjun Zhang, Chunrong Fang, Tongke Zhang, Bowen Yu, Weisong Sun, and Zhenyu Chen. 2023. GAMMA: Revisiting template-based automated program repair via mask prediction. In ASE. 535–547.
[132]
Xindong Zhang, Chenguang Zhu, Yi Li, Jianmei Guo, Lihua Liu, and Haobo Gu. 2020. Precfix: Large-scale patch recommendation by mining defect-patch pairs. In ICSE. 41–50.
[133]
Yuntong Zhang, Xiang Gao, Gregory J. Duck, and Abhik Roychoudhury. 2022. Program vulnerability repair via inductive inference. In ISSTA. 691–702.
[134]
Wenkang Zhong, Hongliang Ge, Hongfei Ai, Chuanyi Li, Kui Liu, Jidong Ge, and Bin Luo. 2022. StandUp4NPR: Standardizing SetUp for empirically comparing neural program repair systems. In ASE. 97:1–97:13.
[135]
Wenkang Zhong, Chuanyi Li, Kui Liu, Tongtong Xu, Tegawendé F. Bissyandé, Jidong Ge, Bin Luo, and Vincent Ng. 2024. Practical program repair via preference-based ensemble strategy. In ICSE.
[136]
Qihao Zhu, Zeyu Sun, Yuan-an Xiao, Wenjie Zhang, Kang Yuan, Yingfei Xiong, and Lu Zhang. 2021. A syntax-guided edit decoder for neural program repair. In FSE. 341–353.
[137]
Qihao Zhu, Zeyu Sun, Wenjie Zhang, Yingfei Xiong, and Lu Zhang. 2023. Tare: Type-aware neural program repair. In ICSE. 1443–1455.

Index Terms

  1. Evolving Paradigms in Automated Program Repair: Taxonomy, Challenges, and Opportunities

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Computing Surveys
    ACM Computing Surveys  Volume 57, Issue 2
    February 2025
    974 pages
    EISSN:1557-7341
    DOI:10.1145/3696822
    • Editors:
    • David Atienza,
    • Michela Milano
    Issue’s Table of Contents

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 10 October 2024
    Online AM: 19 September 2024
    Accepted: 16 September 2024
    Revised: 24 August 2024
    Received: 05 August 2022
    Published in CSUR Volume 57, Issue 2

    Check for updates

    Author Tag

    1. Automated program repair

    Qualifiers

    • Survey

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 386
      Total Downloads
    • Downloads (Last 12 months)386
    • Downloads (Last 6 weeks)129
    Reflects downloads up to 27 Dec 2024

    Other Metrics

    Citations

    View Options

    Login options

    Full Access

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Full Text

    View this article in Full Text.

    Full Text

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media