[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
review-article
Free access

Automated program repair

Published: 21 November 2019 Publication History

Abstract

Automated program repair can relieve programmers from the burden of manually fixing the ever-increasing number of programming mistakes.

References

[1]
Abadi, M., Budiu, M., Erlingsson, U. and Ligatti, J. Control-flow integrity. In Proceedings of the 12th ACM Conference on Computer and Communications Security, 2005, ACM, 340--353.
[2]
Alur, R., Singh, R., Fisman, D. and Solar-Lezama, A. Search-based program synthesis. Commun. ACM 61 (2018), 84--93.
[3]
Brown, D.B., Vaughn, M., Liblit, B. and Reps, T.W. The care and feeding of wild-caught mutants. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, (Paderborn, Germany, Sept. 4--8, 2017), 511--522.
[4]
Fry, Z.P., Landau, B., and Weimer, W. A human study of patch maintainability. In Proceedings of the Intern. Symp. on Software Testing and Analysis, 2012, 177--187.
[5]
Gupta, R., Pal, S., Kanade, A. and Shevade, S. DeepFix: Fixing common C language errors by deep learning. Assoc. for the Advancement of Artificial Intelligence, 2017.
[6]
Harman, M. Automated patching techniques: The fix is in. Commun. ACM 53 (2010), 108--108.
[7]
Johnson, B., Song, Y., Murphy-Hill, E. and Bowdidge, Z. Why don't software developers use static analysis tools to find bugs? In Proceedings of the Intern. Conf. on Software Engineering, 2013, 672--681.
[8]
Jones, J.A., Harrold, M.J. and Stasko, J. Visualization of test information to assist fault localization. In Proceedings of the ACM/IEEE Intern. Conf. on Software Engineering, 9.
[9]
Kim, D., Nam, J., Song, J. and Kim, S. Automatic patch generation learned from human-written patches. In Proceedings of the ACM/IEEE International Conference on Software Engineering, 2013.
[10]
King, J.C. Symbolic execution and program testing. Commun. ACM 19 (1976).
[11]
Logozzo, F. and Ball, T. Modular and verified automatic program repair. In Proceedings of Object-Oriented Programming Systems Languages and Applications, 2012.
[12]
Long, F., Amidon, P. and Rinard, M. Automatic inference of code transforms for patch generation. In Proceedings of the ACM SIGSOFT Intern. Symp. on Foundations of Software Engineering, 2017.
[13]
Long, F. and Rinard, M. Staged program repair with condition synthesis. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, 2015.
[14]
Long, F. and Rinard, M. Automatic patch generation by learning correct code. In Proceedings of the ACM Intern. Symp. on Principles of Programming Languages, 2016.
[15]
Marginean, A., Bader, J., Chandra, S., Harman, M., Jia, Y., Mao, K., Mols, A. and Scott, A. Sapfix: Automated end-to-end repair at scale. In Proceedings of the Intern. Conf. on Software Engineering, Software Engineering in Practice track, 2019.
[16]
Mechtaev, S., Yi, J. and Roychoudhury, A. Angelix: Scalable multiline program patch synthesis via symbolic analysis. In Proceedings of the ACM/IEEE Intern. Conf. on Software Engineering, 2016.
[17]
Monperrus, M. Automatic software repair: A bibliography. ACM Computing Surveys 51, 1 (2017).
[18]
Nguyen, H.D.T., Qi, D., Roychoudhury, A. and Chandra, S. SemFix: Program repair via semantic analysis. In Proceedings of the ACM/IEEE Intern. Conf. on Software Engineering, 2013.
[19]
Nistor, A., Chang, P-C., Radoi, C. and Lu, S. Caramel: Detecting and fixing performance problems that have non-intrusive fixes. In Proceedings of ICSE, 2015.
[20]
Perkins, J.H. et al. Automatically patching errors in deployed software. In Proceedings of the Symp. on Operating Systems Principles. ACM, 2009.
[21]
Qi, Y., Mao, X., Lei, Y., Dai, Z. and Wang, C. The strength of random search on automated program repair. In Proceedings of the Intern. Conf. on Software Engineering, 2014.
[22]
Ray, B., Hellendoorn, V., Godhane, S., Tu, Z., Bacchelli, A. and Devanbu, P. On the "naturalness" of buggy code. In Proceedings of the 38th Intern. Conf. on Software Engineering (Austin, TX, USA, May 14--22, 2016), 428--439.
[23]
Sadowski, C., Aftandilian, E., Eagle, A., Miller-Cushon, L. and Jaspan, C. Lessons from building static analysis tools at google. Commun. ACM 61, 4 (Apr. 2018), 58--66.
[24]
Samimi, H., Schäfer, M., Artzi, S., Millstein, T., Tip, F. and Hendren, L. Automated repair of HTML generation errors in PHP applications using string constraint solving. In Proceedings of the 34th Intern. Conf. on Software Engineering, 2012.
[25]
Seacord, R., Plakosh, D. and Lewis, G. Modernizing Legacy Systems: Software Technologies, Engineering Processes and Business Practices. Addison Wesley, 2003.
[26]
Shacham, O.M., Vechev, M.T. and Yahav, E. Chameleon: Adaptive selection of collections. In Proceedings of Conf. on Programming Language Design and Implementation, 2009. ACM, 408--418.
[27]
Shriver, D., Elbaum, S. and Stolee, K.T. At the end of synthesis: narrowing program candidates. In Proceedings of the Intern. Conf. on Software Engineering, 2017.
[28]
Singh, R., Gulwani, S. and Solar-Lezama, A. Automated feedback generation for introductory programming assignments. In Proceedings of the Intern. Conf. on Programming Language Design and Implementation, 2013.
[29]
Smith, E.K., Barr, E., Le Goues, C. and Brun, Y. Is the cure worse than the disease? overfitting in automated program repair. In Proceedings of the International Symposium on Foundations of Software Engineering (FSE), 2015.
[30]
Su, Z. and Wassermann, G. The essence of command injection attacks in Web applications. In Proceedings of Symp. on Principles of Programming Languages, 2006, 372--382.
[31]
Toffola, L.D., Pradel, M. and Gross, T.R. Performance problems you can fix: A dynamic analysis of memoization opportunities. In Proceedings of Conf. on Object-Oriented Programming, Systems, Languages, and Applications, 2015.
[32]
Tufano, M., Watson, C., Bavota, G., Di Penta, M., White, M. and Poshyvanyk, D. An empirical investigation into learning bug-fixing patches in the wild via neural machine translation. In Proceedings of Intern. Conf. on Automated Software Engineering, 2018.
[33]
Urli, S., Yu, Z., Seinturier, L. and Monperrus, M. How to design a program repair bot? insights from the repairnator project. In Proceedings of Intern. Conf. on Software Engineering, Track Software Engineering in Practice, 2018.
[34]
Wei, Y., Pei, Y., Furia, C.A., Silva, L.S., Buchholz, S., Meyer, B. and Zeller, A. Automated fixing of programs with contracts. In Proceedings of ACM Intern. Symp. on Software Testing and Analysis, 2010.
[35]
Weimer, W., Forrest, S., Kim, M., Le Goues, C. and Hurley, P. Trusted software repair for system resiliency. In Proceedings of 46th Annual IEEE/IFIP Intern. Conf. on Dependable Systems and Networks Workshops, 2016.
[36]
Weimer, W., Fry, Z, and Forrest, S. Leveraging program equivalence for adaptive program repair: Models and first results. In Proceedings of ACM/IEEE Intern. Conf. on Automated Software Engineering, 2013.
[37]
Weimer, W., Nguyen, T.V., Le Goues, C. and Forrest, S. Automatically finding patches using genetic programming. In Proceedings of ACM/IEEE Intern. Conf. on Software Engineering, 2009.
[38]
Xiong, Y., Liu, X., Zeng, M., Zhang, L. and Huang, G. Identifying patch correctness in test-based program repair. In Proceedings of Intern. Conf. on Software Engineering, 2018.
[39]
Xuan, J., Martinez, M., Demarco, F., Clement, M., Marcote, S.L., Durieux, T., Le Berre, D. and Monperrusm M. Nopol: Automatic repair of conditional statement bugs in Java programs. IEEE Trans. Software Engineering 43, (2017).
[40]
Yi, J., Ahmed, U.Z., Karkare, A., Tan, S.H. and Roychoudhury, A. A feasibility study of using automated program repair for introductory programming assignments. In Proceedings of ACM SIGSOFT Intern. Symp. Foundations of Software Engineering, 2017.

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Communications of the ACM
Communications of the ACM  Volume 62, Issue 12
December 2019
78 pages
ISSN:0001-0782
EISSN:1557-7317
DOI:10.1145/3372896
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 November 2019
Published in CACM Volume 62, Issue 12

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Review-article
  • Popular
  • Refereed

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)1,592
  • Downloads (Last 6 weeks)177
Reflects downloads up to 04 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Automated program repair for variability bugs in software product line systemsJournal of Systems and Software10.1016/j.jss.2024.112152221(112152)Online publication date: Mar-2025
  • (2025)Explainable automated debugging via large language model-driven scientific debuggingEmpirical Software Engineering10.1007/s10664-024-10594-x30:2Online publication date: 1-Mar-2025
  • (2025)Understanding vulnerabilities in software supply chainsEmpirical Software Engineering10.1007/s10664-024-10581-230:1Online publication date: 1-Feb-2025
  • (2024)NEXTProceedings of the 41st International Conference on Machine Learning10.5555/3692070.3693610(37929-37956)Online publication date: 21-Jul-2024
  • (2024)Evolving Paradigms in Automated Program Repair: Taxonomy, Challenges, and OpportunitiesACM Computing Surveys10.1145/369645057:2(1-43)Online publication date: 10-Oct-2024
  • (2024)Automated Repair of Multi-fault Programs: Obstacles, Approaches, and ProspectsProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695287(2215-2219)Online publication date: 27-Oct-2024
  • (2024)ASSIST: Automated Feedback Generation for Syntax and Logical Errors in Programming ExercisesProceedings of the 2024 ACM SIGPLAN International Symposium on SPLASH-E10.1145/3689493.3689981(66-76)Online publication date: 17-Oct-2024
  • (2024)Automated Unit Test Improvement using Large Language Models at MetaCompanion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering10.1145/3663529.3663839(185-196)Online publication date: 10-Jul-2024
  • (2024)Detecting, Creating, Repairing, and Understanding Indivisible Multi-Hunk BugsProceedings of the ACM on Software Engineering10.1145/36608281:FSE(2747-2770)Online publication date: 12-Jul-2024
  • (2024)A Deep Dive into Large Language Models for Automated Bug Localization and RepairProceedings of the ACM on Software Engineering10.1145/36607731:FSE(1471-1493)Online publication date: 12-Jul-2024
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Digital Edition

View this article in digital edition.

Digital Edition

Magazine Site

View this article on the magazine site (external)

Magazine Site

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media