Fast and Precise On-the-Fly Patch Validation for All

Generate-and-validate (GV furthermore, UniAPR addresses the imprecise patch validation issue by resetting the JVM global state via runtime bytecode transformation. We have implemented UniAPR as a fully automated Maven Plugin. We have also performed the first study of on-the-fly patch validation for state-of-the-art source-code-level APR. Our experiments show the first empirical evidence that vanilla on-the-fly patch validation can be imprecise/unsound; in contrast, our UniAPR framework can speed up state-of-the-art APR by over an order of magnitude without incurring any imprecision in patch validation, enabling all existing APR techniques to explore a larger search space to fix more bugs in the near future. Furthermore, UniAPR directly enables hybrid source and bytecode APR to fix substantially more bugs than all state-of-the-art APR techniques (under the same time limit) in the near future.

[1]  Martin Monperrus,et al.  Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs , 2018, IEEE Transactions on Software Engineering.

[2]  Yuhua Qi,et al.  The strength of random search on automated program repair , 2014, ICSE.

[3]  Shin Yoo,et al.  Ask the Mutants: Mutating Faulty Programs for Fault Localization , 2014, 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation.

[4]  Xia Li,et al.  Transforming programs and tests in tandem for fault localization , 2017, Proc. ACM Program. Lang..

[5]  Yves Le Traon,et al.  Metallaxis‐FL: mutation‐based fault localization , 2015, Softw. Test. Verification Reliab..

[6]  Bo Wang,et al.  Faster mutation analysis via equivalence modulo states , 2017, ISSTA.

[7]  Xia Li,et al.  On the Effectiveness of Unified Debugging: An Extensive Study on 16 Program Repair Systems , 2020, 2020 35th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[8]  Sarfraz Khurshid,et al.  Accelerating Search-Based Program Repair , 2018, 2018 IEEE 11th International Conference on Software Testing, Verification and Validation (ICST).

[9]  Mark Harman,et al.  Predictive Mutation Testing , 2019, IEEE Transactions on Software Engineering.

[10]  Fan Long,et al.  Automatic runtime error repair and containment via recovery shepherding , 2014, PLDI.

[11]  Matias Martinez,et al.  Ultra-Large Repair Search Space with Automatically Mined Templates: The Cardumen Mode of Astor , 2017, SSBSE.

[12]  Sarfraz Khurshid,et al.  Injecting mechanical faults to localize developer faults for evolving software , 2013, OOPSLA.

[13]  Qi Xin,et al.  Leveraging syntax-related code for automated program repair , 2017, 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[14]  Jacques Klein,et al.  FixMiner: Mining relevant fix patterns for automated program repair , 2018, Empirical Software Engineering.

[15]  Lu Zhang,et al.  Mutation-based test-case prioritization in software evolution , 2015, 2015 IEEE 26th International Symposium on Software Reliability Engineering (ISSRE).

[16]  Claire Le Goues,et al.  Automated program repair , 2019, Commun. ACM.

[17]  K. N. King,et al.  A fortran language system for mutation‐based software testing , 1991, Softw. Pract. Exp..

[18]  Fan Long,et al.  Automatic patch generation by learning correct code , 2016, POPL.

[19]  Armando Solar-Lezama,et al.  Program synthesis by sketching , 2008 .

[20]  David Lo,et al.  History Driven Program Repair , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[21]  René Just,et al.  The major mutation framework: efficient and scalable mutation analysis for Java , 2014, ISSTA 2014.

[22]  Michael D. Ernst,et al.  Automatically patching errors in deployed software , 2009, SOSP '09.

[23]  Yuriy Brun,et al.  The plastic surgery hypothesis , 2014, SIGSOFT FSE.

[24]  Fan Long,et al.  Staged program repair with condition synthesis , 2015, ESEC/SIGSOFT FSE.

[25]  Ming Wen,et al.  Context-Aware Patch Generation for Better Automated Program Repair , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[26]  Daniela Micucci,et al.  Automatic Software Repair: A Survey , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[27]  Darko Marinov,et al.  Balancing trade-offs in test-suite reduction , 2014, SIGSOFT FSE.

[28]  William E. Howden,et al.  Weak Mutation Testing and Completeness of Test Sets , 1982, IEEE Transactions on Software Engineering.

[29]  Matias Martinez,et al.  Repairnator patches programs automatically , 2019, Ubiquity.

[30]  Rui Abreu,et al.  A Survey on Software Fault Localization , 2016, IEEE Transactions on Software Engineering.

[31]  Sarfraz Khurshid,et al.  Towards Practical Program Repair with On-demand Candidate Generation , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[32]  Dawei Qi,et al.  SemFix: Program repair via semantic analysis , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[33]  Lingming Zhang,et al.  Practical program repair via bytecode mutation , 2018, ISSTA.

[34]  Nikolai Tillmann,et al.  Test generation via Dynamic Symbolic Execution for mutation testing , 2010, 2010 IEEE International Conference on Software Maintenance.

[35]  Xia Li,et al.  Can automated program repair refine fault localization? a unified debugging approach , 2020, ISSTA.

[36]  Luciano Baresi,et al.  An Introduction to Software Testing , 2006, FoVMT.

[37]  Matias Martinez,et al.  ASTOR: a program repair library for Java (demo) , 2016, ISSTA.

[38]  Lingming Zhang,et al.  History-driven build failure fixing: how far are we? , 2019, ISSTA.

[39]  Hongyu Zhang,et al.  Shaping program repair space with existing patches and similar code , 2018, ISSTA.

[40]  Mike Papadakis,et al.  Towards automating the generation of mutation tests , 2010, AST '10.

[41]  Frederic P. Miller,et al.  Apache Maven , 2010 .

[42]  Anthony Ventresque,et al.  Demo: PIT a Practical Mutation Testing Tool for Java , 2016 .

[43]  Andreas Zeller,et al.  Javalanche: efficient mutation testing for Java , 2009, ESEC/SIGSOFT FSE.

[44]  Michael D. Ernst,et al.  Defects4J: a database of existing faults to enable controlled testing studies for Java programs , 2014, ISSTA 2014.

[45]  Carlo A. Furia,et al.  Contract-based program repair without the contracts , 2017, 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[46]  Claire Le Goues,et al.  GenProg: A Generic Method for Automatic Software Repair , 2012, IEEE Transactions on Software Engineering.

[47]  Jacques Klein,et al.  On the Efficiency of Test Suite based Program Repair A Systematic Assessment of 16 Automated Repair Systems for Java Programs , 2020, 2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE).

[48]  Yingfei Xiong,et al.  Inferring Program Transformations From Singular Examples via Big Code , 2019, 2019 34th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[49]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[50]  Dinh Xuan Bach Le Overfitting in automated program repair: Challenges and solutions , 2018 .

[51]  Hao Zhong,et al.  Mining stackoverflow for program repair , 2018, 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[52]  Jaechang Nam,et al.  Automatic patch generation learned from human-written patches , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[53]  Tegawendé F. Bissyandé,et al.  TBar: revisiting template-based automated program repair , 2019, ISSTA.

[54]  Wei Li,et al.  DeepFL: integrating multiple fault diagnosis dimensions for deep fault localization , 2019, ISSTA.

[55]  Monperrus Martin Automatic Software Repair: a Bibliography , 2020 .

[56]  2013 , 2018, Eu minha tía e o golpe do atraso.

[57]  Kristie B. Hadden,et al.  2020 , 2020, Journal of Surgical Orthopaedic Advances.

[58]  Martin Monperrus,et al.  DynaMoth: Dynamic Code Synthesis for Automatic Program Repair , 2016, 2016 IEEE/ACM 11th International Workshop in Automation of Software Test (AST).

[59]  Abhik Roychoudhury,et al.  Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[60]  W. Eric Wong,et al.  Using Mutation to Automatically Suggest Fixes for Faulty Programs , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[61]  Gail E. Kaiser,et al.  Unit test virtualization with VMVM , 2014, ICSE.

[62]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[63]  Jiachen Zhang,et al.  Precise Condition Synthesis for Program Repair , 2016, 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE).