skip to main content
review-article
Free Access

Automated program repair

Published:21 November 2019Publication History
Skip Abstract Section

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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Alur, R., Singh, R., Fisman, D. and Solar-Lezama, A. Search-based program synthesis. Commun. ACM 61 (2018), 84--93.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  6. Harman, M. Automated patching techniques: The fix is in. Commun. ACM 53 (2010), 108--108.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarCross RefCross Ref
  10. King, J.C. Symbolic execution and program testing. Commun. ACM 19 (1976).Google ScholarGoogle Scholar
  11. Logozzo, F. and Ball, T. Modular and verified automatic program repair. In Proceedings of Object-Oriented Programming Systems Languages and Applications, 2012.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Monperrus, M. Automatic software repair: A bibliography. ACM Computing Surveys 51, 1 (2017).Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle ScholarCross RefCross Ref
  20. Perkins, J.H. et al. Automatically patching errors in deployed software. In Proceedings of the Symp. on Operating Systems Principles. ACM, 2009.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Seacord, R., Plakosh, D. and Lewis, G. Modernizing Legacy Systems: Software Technologies, Engineering Processes and Business Practices. Addison Wesley, 2003.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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).Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Automated program repair

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • 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

        Copyright © 2019 ACM

        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

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • review-article
        • Popular
        • Refereed

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      HTML Format

      View this article in HTML Format .

      View HTML Format