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. Software defect has become an important factor troubling developers. In this context, Automated Program Repair (APR) techniques have emerged, aiming to automatically fix software defect 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 revisit the evolution of APR techniques and discuss in depth the latest advances in APR research. In this paper, 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, summarize the advantages and disadvantages of APR techniques, and discuss the current state of APR development. Furthermore, we introduce the research on the related technical areas of APR that have also provided a strong motivation to advance APR development. Finally, we analyze current challenges and future directions, especially highlighting the critical opportunities that large language models bring to APR research.
翻译:随着程序软件的快速发展和大规模普及,现代社会对软件系统的依赖程度越来越高。然而,软件暴露的问题也逐渐突显出来。软件缺陷已经成为困扰开发人员的重要因素。在这种背景下,自动程序修复(APR)技术应运而生,旨在自动修复软件缺陷问题,减少手动调试工作。特别是得益于深度学习的先进技术,近年来涌现出许多基于学习的APR技术,这也为APR研究带来了新的机遇。为了为研究人员提供APR技术全面发展和未来机遇的快速概述,我们回顾了APR技术的发展历程,并深入讨论了APR研究的最新进展。在本文中,我们将APR技术的发展介绍为四种不同的补丁生成方案:基于搜索的、基于约束的、基于模板的和基于学习的。此外,我们提出了一套统一的标准来审查和比较每个APR工具,总结了APR技术的优缺点,并讨论了APR发展的当前状态。此外,我们还介绍了与APR相关的技术领域的研究,这些领域也为推进APR的发展提供了强有力的动力。最后,我们分析了当前的挑战和未来方向,特别强调大语言模型为APR研究带来的重要机遇。