软件缺陷自动修复技术综述
作者:
作者简介:

姜佳君(1992-),男,博士,副研究员,CCF专业会员,主要研究领域为软件工程,代码调试,程序变换.
熊英飞(1982-),男,博士,研究员,博士生导师,CCF专业会员,主要研究领域为软件工程,程序设计语言.
陈俊洁(1992-),男,博士,副教授,博士生导师,CCF专业会员,主要研究领域为软件分析与测试.

通讯作者:

陈俊洁,E-mail:junjiechen@tju.edu.cn

基金项目:

国家自然科学基金(62002256,61922003);天津市智能制造专项资金项目(20193155)


Survey of Automatic Program Repair Techniques
Author:
Fund Project:

National Natural Science Foundation of China (62002256, 61922003); Intelligent Manufacturing Special Fund of Tianjin (20193155)

  • 摘要
  • | |
  • 访问统计
  • |
  • 参考文献 [121]
  • |
  • 相似文献 [20]
  • | | |
  • 文章评论
    摘要:

    软件缺陷是软件开发和维护过程中不可避免的.随着现代软件规模的不断变大,软件缺陷的数量以及修复难度随之增加,为企业带来了巨大的经济损失.修复软件缺陷,成为了开发人员维护软件质量的重大负担.软件缺陷自动修复技术有希望将开发者从繁重的调试中解脱出来,近年来成为热门的研究领域之一.搜集了94篇该领域最新的高水平论文,进行了详细的分析和总结.基于缺陷修复技术在补丁生成阶段所使用的技术手段不同,系统性地将软件自动修复技术分为4大类,分别是基于启发式搜索、基于人工模板、基于语义约束和基于统计分析的修复技术.特殊地,根据对近几年最新研究的总结,首次提出了基于统计分析的技术分类,对已有分类进行了补充和完善.随后,基于对已有研究的分析,总结了该领域研究所面临的关键挑战及对未来研究的启示.最后,对缺陷修复领域常用的基准数据集和开源工具进行了总结.

    Abstract:

    Program defects are inevitable during the development and maintenance processes. With the rapid increase of software scales, the number and repair complexity of program defects increase as well, which has caused huge economic loss to enterprises, and becomes the big burden for developers during maintaining. Automatic program repair (APR) techniques have the potential to release developers from heavy debugging tasks, and become a popular research topic recently. This study collected the most recent 94 high-quality publications in this research field. According to analyzing the approaches used for patch generation, APRs are systematically classified into four categories, i.e., search-based, template-based, constraint-based, and statistical-analysis-based APRs. Especially, this study proposed the category of statistical-analysis-based APR for the first time based on the most recent publications, which complements and improves existing taxonomy. Based on existing techniques, the key challenges and insights are summarized for future research. Finally, benchmarks and open-source APR tools are briefly summarized for reference.

    参考文献
    [1] Gazzola L, Micucci D, Mariani L. Automatic software repair:A survey. IEEE Trans. on Software Engineering, 2017,45(1):34-67.[doi:10.1109/TSE.2017.2755013]
    [2] Monperrus M. Automatic software repair:A bibliography. ACM Computing Survey, 2018,51(1):1-24.[doi:10.1145/3105906]
    [3] Xuan JF, Ren ZL, Wang ZY, Xie XY, Jang H. Progress on approaches to automatic program repair. Ruan Jian Xue Bao/Journal of Software, 2016,27(4):771-784(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/4972.html[doi:10.13328/j. cnki.jos.004972]
    [4] Wang Z, Gao J, Chen X, Fu HJ, Fan XY. Automatic program repair techniques:A survey. Chinese Journal of Computers, 2018, 41(3):588-610(in Chinese with English abstract).
    [5] Li B, He YP, Ma HT. Automatic program repair:Key problems and technologies. Ruan Jian Xue Bao/Journal of Software, 2019, 30(2):244-265(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5657.html[doi:10.13328/j.cnki.jos.005657]
    [6] Liu BB, Dong W, Wang J. Survey on intelligent search and construction methods of program. Ruan Jian Xue Bao/Journal of Software, 2018,29(8):2180-2197(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5529.html[doi:10.13328/j. cnki.jos.005529]
    [7] Bader J, Scott A, Pradel M, Chandra S. Getafix:Learning to fix bugs automatically. In:Proc. of the ACM Programming Language (OOPSLA). ACM, 2019. 1-27.[doi:10.1145/3360585]
    [8] Gupta R, Pal S, Kanade A, Shevade S. Deepfix:Fixing common C language errors by deep learning. In:Proc. of the 31st AAAI Conf. on Artificial Intelligence (AAAI). 2017. 1345-1351.
    [9] Chen ZM, Kommrusch SJ, Tufano M, Pouchet LN, Poshyvanyk D, Monperrus M. Sequencer:Sequence-to-sequence learning for end-to-end program repair. IEEE Trans. on Software Engineering, 2019.[doi:10.1109/TSE.2019.2940179]
    [10] Vasic M, Kanade A, Maniatis P, Bieber D, Singh R. Neural program repair by jointly learning to localize and repair. In:Proc. of the 7th Int'l Conf. on Learning Representations (ICLR). 2019. 1-12
    [11] Liu K, Koyuncu A, Kim D, Bissyandé TF. TBar:Revisiting template-based automated program repair. In:Proc. of the 28th ACM SIGSOFT Int'l Symp. on Software Testing and Analysis. ACM, 2019. 31-42.[doi:10.1145/3293882.3330577]
    [12] Abreu R, Zoeteweij P, Van Gemund AJC. On the accuracy of spectrum-based fault localization. In:Proc. of Testing:Academic and Industrial Conf. on Practice and Research Techniques-MUTATION. IEEE, 2007. 89-98.[doi:10.1109/TAIC.PART.2007.13]
    [13] Pearson S, Campos J, Just R, Fraser G, Abreu R, Ernst MD, Pang D, Keller B. Evaluating and improving fault localization. In:Proc. of the 39th Int'l Conf. on Software Engineering (ICSE). IEEE, 2017. 609-620.[doi:10.1109/ICSE.2017.62]
    [14] Xuan JF, Monperrus M. Learning to combine multiple ranking metrics for fault localization. In:Proc. of the Int'l Conf. on Software Maintenance and Evolution (ICSME). IEEE, 2014. 191-200.[doi:10.1109/ICSME.2014.41]
    [15] Xie X, Chen TY, Kuo FC, Xu B. A theoretical analysis of the risk evaluation formulas for spectrum-based fault localization. ACM Trans. on Software Engineering and Methodology, 2013,22(4):1-40.[doi:10.1145/2522920.2522924]
    [16] Bian P, Liang B, Shi WC, Huang JJ, Cai Y. NAR-Miner:Discovering negative association rules from code for bug detection. In:Proc. of the 201826th ACM Joint Meeting on European Software Engineering Conf. and Symp. on the Foundations of Software Engineering (ESEC/FSE). ACM, 2018. 411-422.[doi:10.1145/3236024.3236032]
    [17] Liang B, Bian P, Zhang Y, Shi WC, You W, Cai Y. AntMiner:Mining more bugs by reducing noise interference. In:Proc. of the 38th Int'l Conf. on Software Engineering (ICSE). IEEE, 2016. 333-344.[doi:10.1145/2884781.2884870]
    [18] Li ZM, Zhou YY. PR-Miner:Automatically extracting implicit programming rules and detecting violations in large software code. In:Proc. of the 10th European Software Engineering Conf. Held Jointly with 13th ACM SIGSOFT Int'l Symp. on Foundations of Software Engineering (ESEC/FSE). ACM, 2005. 306-315.[doi:10.1145/1081706.1081755]
    [19] Wang QQ, Parnin C, Orso A. Evaluating the usefulness of IR-based fault localization techniques. In:Proc. of the 2015 Int'l Symp. on Software Testing and Analysis (ISSTA). ACM, 2015. 1-11.[doi:10.1145/2771783.2771797]
    [20] Wong WE, Gao RZ, Li YH, Abreu R, Wotawa F. A survey on software fault localization. IEEE Trans. on Software Engineering, 2016,42(8):707-740.[doi:10.1109/TSE.2016.2521368]
    [21] Qi ZC, Long F, Achour S, Rinard M. An analysis of patch plausibility and correctness for generate-and-validate patch generation systems. In:Proc. of the 2015 Int'l Symp. on Software Testing and Analysis (ISSTA). ACM, 2015. 24-36.[doi:10.1145/2771783. 2771791]
    [22] Xiong YF, Liu XY, Zeng MH, Zhang L, Huang G. Identifying patch correctness in test-based program repair. In:Proc. of the 40th Int'l Conf. on Software Engineering (ICSE). ACM, 2018. 789-799.[doi:10.1145/3180155.3180182]
    [23] Xin Q, Reiss SP. Identifying test-suite-overfitted patches through test case generation. In:Proc. of the 26th ACM SIGSOFT Int'l Symp. on Software Testing and Analysis (ISSTA), Vol.17. ACM, 2017. 226-236.[doi:10.1145/3092703.3092718]
    [24] Long F, Rinard M. Automatic patch generation by learning correct code. In:Proc. of the 43rd Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages (POPL). ACM, 2016. 298-312.[doi:10.1145/2837614.2837617]
    [25] Xiong YF, Wang J, Yan RF, Zhang JC, Han S, Huang G, Zhang L. Precise condition synthesis for program repair. In:Proc. of the 39th Int'l Conf. on Software Engineering (ICSE). IEEE, 2017. 416-426.[doi:10.1109/ICSE.2017.45]
    [26] Forrest S, Nguyen TV, Weimer W, Le Goues C. A genetic programming approach to automated software repair. In:Proc. of the 11th Annual Conf. on Genetic and Evolutionary Computation (GECCO). ACM, 2009. 947-954.
    [27] Le Goues C, Dewey-Vogt M, Forrest S, Weimer W. A systematic study of automated program repair:Fixing 55 out of 105 bugs for $8 each. In:Proc. of the 201234th Int'l Conf. on Software Engineering (ICSE). IEEE, 2012. 3-13.
    [28] Le Goues C, Nguyen TV, Forrest S, Weimer W. Genprog:A generic method for automatic software repair. IEEE Trans. on Software Engineering, 2011,38(1):54-72.[doi:10.1109/TSE.2011.104]
    [29] Jiang JJ, Xiong YF, Zhang HY, Gao Q, Chen XQ. Shaping program repair space with existing patches and similar code. In:Proc. of the 27th ACM SIGSOFT Int'l Symp. on Software Testing and Analysis (ISSTA). ACM, 2018. 298-309.
    [30] Kim D, Nam J, Song J, Kim S. Automatic patch generation learned from human-written patches. In:Proc. of the 201335th Int'l Conf. on Software Engineering (ICSE). IEEE, 2013. 802-811.
    [31] Hua JR, Zhang MS, Wang KY, Khurshid S. Towards practical program repair with on-demand candidate generation. In:Proc. of the 40th Int'l Conf. on Software Engineering (ICSE). ACM, 2018. 12-23.[doi:10.1145/3180155.3180245]
    [32] Xuan JF, Martinez M, Demarco F, Clement M, Marcote SL, Durieux T, Le Berre D, Monperrus M. Nopol:Automatic repair of conditional statement bugs in java programs. IEEE Trans. on Software Engineering, 2016,43(1):34-55.
    [33] Mechtaev S, Yi J, Roychoudhury A. Angelix:Scalable multiline program patch synthesis via symbolic analysis. In:Proc. of the 38th Int'l Conf. on Software Engineering (ICSE). ACM, 2016. 691-701.[doi:10.1145/2884781.2884807]
    [34] Qi YH, Mao XG, Lei Y, Dai ZY, Wang CS. The strength of random search on automated program repair. In:Proc. of the 36th Int'l Conf. on Software Engineering (ICSE). ACM, 2014. 254-265.[doi:10.1145/2568225.2568254]
    [35] Oliveira VPL, de Souza EF, Le Goues C, Camilo-Junior CG. Improved representation and genetic operators for linear genetic programming for automated program repair. Empirical Software Engineering, 2018,23(5):2980-3006.
    [36] Yuan Y, Banzhaf W. ARJA:Automated repair of java programs via multi-objective genetic programming. IEEE Trans. on Software Engineering, 2018,46(10):1040-1067.
    [37] Mehne B, Yoshida H, Prasad MR, Sen K, Gopinath D, Khurshid S. Accelerating search-based program repair. In:Proc. of the 2018 IEEE 11th Int'l Conf. on Software Testing, Verification and Validation (ICST). IEEE, 2018. 227-238.
    [38] Sun SY, Guo JX, Zhao RL, Li Z. Search-based efficient automated program repair using mutation and fault localization. In:Proc. of the 2018 IEEE 42nd Annual Computer Software and Applications Conf. (COMPSAC). IEEE, 2018. 174-183.
    [39] Dantas A, de Souza EF, Souza J, Camilo-Junior CG. Code naturalness to assist search space exploration in search-based program repair methods. In:Proc. of the Int'l Symp. on Search Based Software Engineering (SSBSE). Springer-Verlag, 2019. 164-170.
    [40] Villanueva OM, Trujillo L, Hernandez DE. Novelty search for automatic bug repair. In:Proc. of the 2020 Genetic and Evolutionary Computation Conf. (GECCO). ACM, 2020. 1021-1028.[doi:10.1145/3377930.3389845]
    [41] Yuan Y, Banzhaf W. A hybrid evolutionary system for automatic software repair. In:Proc. of the Genetic and Evolutionary Computation Conf. (GECCO). ACM, 2019. 1417-1425.[doi:10.1145/3321707.3321830]
    [42] Yuan Y, Banzhaf W. Toward better evolutionary program repair:An integrated approach. ACM Trans. on Software Engineering and Methodology, 2020,29(1):1-53.[doi:10.1145/3360004]
    [43] Just R, Jalali D, Ernst MD. Defects4J:A database of existing faults to enable controlled testing studies for Java programs. In:Proc. of the 2014 Int'l Symp. on Software Testing and Analysis (ISSTA). ACM, 2014. 437-440.
    [44] Ghanbari A, Benton S, Zhang LM. Practical program repair via bytecode mutation. In:Proc. of the 28th ACM SIGSOFT Int'l Symp. on Software Testing and Analysis (ISSTA). ACM, 2019. 19-30.[doi:10.1145/3293882.3330559]
    [45] Le XBD, Lo D, Le Goues C. History driven program repair. In:Proc. of the 2016 IEEE 23rd Int'l Conf. on Software Analysis, Evolution, and Reengineering (SANER), Vol.1. IEEE, 2016. 213-224.[doi:10.1109/SANER.2016.76]
    [46] Wen M, Chen JJ, Wu RX, Hao D, Cheung SC. Context-aware patch generation for better automated program repair. In:Proc. of the 40th Int'l Conf. on Software Engineering (ICSE). IEEE, 2018. 1-11.[doi:10.1145/3180155.3180233]
    [47] Kim J, Kim S. Automatic patch generation with context-based change application. Empirical Software Engineering, 2019,24(6):4071-4106.
    [48] Ji T, Chen LQ, Mao XG, Yi X. Automated program repair by using similar code containing fix ingredients. In:Proc. of the 2016 IEEE 40th Annual Computer Software and Applications Conf. (COMPSAC). IEEE, 2016. 197-202.
    [49] Fluri B, Wursch M, PInzger M, Gall H. Change distilling:Tree differencing for fine-grained source code change extraction. IEEE Trans. on Software Engineering, 2007,33(11):725-743.[doi:10.1109/TSE.2007.70731]
    [50] Wang YY, Chen YT, Shen BJ, Zhong H. CRSearcher:Searching code database for repairing bugs. In:Proc. of the 9th Asia-Pacific Symp. on Internetware. ACM, 2017. 1-6.[doi:10.1145/3131704.3131720]
    [51] Xin Q, Reiss SP. Leveraging syntax-related code for automated program repair. In:Proc. of the 201732nd Int'l Conf. on Automated Software Engineering (ASE). IEEE, 2017. 660-670.
    [52] Hu Y, Ahmed UZ, Mechtaev S, Leong B, Roychoudhury A. Re-factoring based program repair applied to programming assignments. In:Proc. of the 34th Int'l Conf. on Automated Software Engineering (ASE). IEEE, 2019. 388-398.
    [53] Koyuncu A, Liu K, Bissyandé TF, Kim D, Monperrus M, Klein J, Le Traon Y. iFixR:Bug report driven program repair. In:Proc. of the 201927th ACM Joint Meeting on European Software Engineering Conf. and Symp. on the Foundations of Software Engineering (ESEC/FSE). ACM, 2019. 314-325.[doi:10.1145/3338906.3338935]
    [54] Marginean A, Bader J, Chandra S, Harman M, Jia Y, Mao K, Mols A, Scott A. Sapfix:Automated end-to-end repair at scale. In:Proc. of the 41st Int'l Conf. on Software Engineering:Software Engineering in Practice (ICSE-SEIP). IEEE, 2019. 269-278.[doi:10.1109/ICSE-SEIP.2019.00039]
    [55] Tian YC, Ray B. Automatically diagnosing and repairing error handling bugs in C. In:Proc. of the 201711th Joint Meeting on Foundations of Software Engineering (ESEC/FSE). ACM, 2017. 752-762.[doi:10.1145/3106237.3106300]
    [56] Gao FJ, Wang LZ, Li XD. BovInspector:Automatic inspection and repair of buffer overflow vulnerabilities. In:Proc. of the 31st Int'l Conf. on Automated Software Engineering (ASE). IEEE, 2016. 786-791.
    [57] Gao Q, Xiong YF, Mi YQ, Zhang L, Yang WK, Zhou ZP, Xie B, Mei H. Safe memory-leak fixing for c programs. In:Proc. of the 37th IEEE Int'l Conf. on Software Engineering (ICSE). IEEE, 2015. 459-470.[doi:10.1109/ICSE.2015.64]
    [58] Yan H, Sui YL, Chen SP, Xue JL. Automated memory leak fixing on value-flow slices for c programs. In:Proc. of the 31st Annual ACM Symp. on Applied Computing (SAC). ACM, 2016. 1386-1393.[doi:10.1145/2851613.2851773]
    [59] Xu XZ, Sui YL, Yan H, Xue JL. VFix:Value-flow-guided precise program repair for null pointer dereferences. In:Proc. of the 41st Int'l Conf. on Software Engineering (ICSE). IEEE, 2019. 512-523.[doi:10.1109/ICSE.2019.00063]
    [60] Liu XL, Zhong H. Mining stackoverflow for program repair. In:Proc. of the 2018 IEEE 25th Int'l Conf. on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2018. 118-129.[doi:10.1109/SANER.2018.8330202]
    [61] Falleri JR, Morandat F, Blanc X, Martinez M, Monperrus M. Fine-grained and accurate source code differencing. In:Proc. of the 29th Int'l Conf. on Automated Software Engineering (ASE). ACM, 2014. 313-324.[doi:10.1145/2642937.2642982]
    [62] Tan SH, Dong Z, Gao X, Roychoudhury A. Repairing crashes in android apps. In:Proc. of the 40th Int'l Conf. on Software Engineering (ICSE). IEEE, 2018. 187-198.[doi:10.1145/3180155.3180243]
    [63] Durieux T, Cornu B, Seinturier L, Monperrus M. Dynamic patch generation for null pointer exceptions using metaprogramming. In:Proc. of the 2017 IEEE 24th Int'l Conf. on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2017. 349-358.[doi:10.1109/SANER.2017.7884635]
    [64] Mechtaev S, Gao X, Tan SH, Roychoudhury A. Test-equivalence analysis for automatic patch generation. ACM Trans. on Software Engineering and Methodology, 2018,27(4):1-37.[doi:10.1145/3241980]
    [65] Saha S, Saha RK, Prasad MR. Harnessing evolution for multi-hunk program repair. In:Proc. of the 41st Int'l Conf. on Software Engineering (ICSE). IEEE, 2019. 13-24.[doi:10.1109/ICSE.2019.00020]
    [66] Tan SH, Yoshida H, Prasad MR, Roychoudhury A. Anti-patterns in search-based program repair. In:Proc. of the 201624th ACM SIGSOFT Int'l Symp. on Foundations of Software Engineering (FSE). ACM, 2016. 727-738.[doi:10.1145/2950290.2950295]
    [67] Long F, Rinard M. Staged program repair with condition synthesis. In:Proc. of the 201510th Joint Meeting on Foundations of Software Engineering (ESEC/FSE). ACM, 2015. 166-178.[doi:10.1145/2786805.2786811]
    [68] Soto M, Le Goues C. Using a probabilistic model to predict bug fixes. In:Proc. of the 2018 IEEE 25th Int'l Conf. on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2018. 221-231.[doi:10.1109/SANER.2018.8330211]
    [69] Nguyen HDT, Qi DW, Roychoudhury A, Chandra S. Semfix:Program repair via semantic analysis. In:Proc. of the 201335th Int'l Conf. on Software Engineering (ICSE). IEEE, 2013. 772-781.[doi:10.1109/ICSE.2013.6606623]
    [70] Mechtaev S, Yi J, Roychoudhury A. Directfix:Looking for simple program repairs. In:Proc. of the 37th IEEE Int'l Conf. on Software Engineering (ICSE), Vol.1. IEEE, 2015. 448-458.[doi:10.1109/ICSE.2015.63]
    [71] D'Antoni L, Samanta R, Singh R. Qlose:Program repair with quantitative objectives. In:Proc. of the Int'l Conf. on Computer Aided Verification (CAV). Springer-Verlag, 2016. 383-401.
    [72] Rothenberg BC, Grumberg O. Sound and complete mutation-based program repair. In:Proc. of the Int'l Symp. on Formal Methods (FM). Springer-Verlag, 2016. 593-611.
    [73] de Moura L, Bjørner N. Z3:An efficient SMT solver. In:Proc. of the Int'l Conf. on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer-Verlag, 2008. 337-340.
    [74] Chen LS, Pei Y, Furia CA. Contract-based program repair without the contracts. In:Proc. of the 32nd Int'l Conf. on Automated Software Engineering (ASE). IEEE, 2017. 637-647.[doi:10.1109/ASE.2017.8115674]
    [75] Chen LS, Pei Y, Furia CA. Contract-Based program repair without the contracts:An extended study. IEEE Trans. on Software Engineering, 2020.[doi:10.1109/TSE.2020.2970009]
    [76] Nguyen TV, Weimer W, Kapur D, Forrest S. Connecting program synthesis and reachability:Automatic program repair using test-input generation. In:Proc. of the Int'l Conf. on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer-Verlag, 2017. 301-318.
    [77] Le XBD, Chu DH, Lo D, Le Goues C, Visser W. S3:Syntax-and semantic-guided repair synthesis via programming by examples. In:Proc. of the 201711th Joint Meeting on Foundations of Software Engineering (ESEC/FSE). ACM, 2017. 593-604.[doi:10.1145/3106237.3106309]
    [78] Mechtaev S, Nguyen MD, Noller Y, Grunske L, Roychoudhury A. Semantic program repair using a reference implementation. In:Proc. of the 40th Int'l Conf. on Software Engineering (ICSE). ACM, 2018. 129-139.[doi:10.1145/3180155.3180247]
    [79] Lee J, Hong S, Oh H. Memfix:Static analysis-based repair of memory deallocation errors for C. In:Proc. of the 26th ACM Joint Meeting on European Software Engineering Conf. and Symp. on the Foundations of Software Engineering (ESEC/FSE). ACM, 2018. 95-106.[doi:10.1145/3236024.3236079]
    [80] van Tonder R, Le Goues C. Static automated program repair for heap properties. In:Proc. of the 40th Int'l Conf. on Software Engineering (ICSE). ACM, 2018. 151-162.[doi:10.1145/3180155.3180250.]
    [81] Ke YL, Stolee KT, Le Goues C, Brun Y. Repairing programs with semantic code search. In:Proc. of the 30th Int'l Conf. on Automated Software Engineering (ASE). IEEE, 2015. 295-306.[doi:10.1109/ASE.2015.60]
    [82] Afzal A, Motwani M, Stolee K, BrunY, Le Goues C. SOSRepair:Expressive semantic search for real-world program repair. IEEE Trans. on Software Engineering, 2019.[doi:10.1109/TSE.2019.2944914]
    [83] Saha RK, Lyu YJ, Yoshida H, Prasad MR. Elixir:Effective object-oriented program repair. In:Proc. of the 32nd Int'l Conf. on Automated Software Engineering (ASE). IEEE, 2017. 648-659.[doi:10.1109/ASE.2017.8115675]
    [84] White M, Tufano M, Martinez M, Monperrus M, Poshyvanyk D. Sorting and transforming program repair ingredients via deep learning code similarities. In:Proc. of the 2019 IEEE 26th Int'l Conf. on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2019. 479-490.[doi:10.1109/SANER.2019.8668043]
    [85] Long F, Amidon P, Rinard M. Automatic inference of code transforms for patch generation. In:Proc. of the 201711th Joint Meeting on Foundations of Software Engineering (ESEC/FSE). ACM, 2017. 727-739.[doi:10.1145/3106237.3106253]
    [86] Rolim R, Soares G, D'Antoni L, Polozov O, Gulwani S, Gheyi R, Suzuki R, Hartmann B. Learning syntactic program transformations from examples. In:Proc. of the 39th Int'l Conf. on Software Engineering (ICSE). IEEE, 2017. 404-415.[doi:10.1109/ICSE.2017.44]
    [87] Zhong H, Mei H. Mining repair model for exception-related bug. Journal of Systems and Software, 2018,141:16-31.[doi:10.1016/j.jss.2018.03.046]
    [88] Gulwani S, Radiček I, Zuleger F. Automated clustering and program repair for introductory programming assignments. In:Proc. of the 39th ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI). ACM, 2018. 465-480.[doi:10.1145/3192366.3192387]
    [89] Bavishi R, Yoshida H, Prasad MR. Phoenix:Automated data-driven synthesis of repairs for static analysis violations. In:Proc. of the 201927th ACM Joint Meeting on European Software Engineering Conf. and Symp. on the Foundations of Software Engineering. 2019. 613-624.
    [90] Koyuncu A, Liu K, Bissyandé TF, Kim D, Klein J, Monperrus M, Le Traon Y. Fixminer:Mining relevant fix patterns for automated program repair. Empirical Software Engineering, 2020, 1-45.[doi:10.1007/s10664-019-09780-z]
    [91] Liu K, Koyuncu A, Kim D, Bissyandé TF. Avatar:Fixing semantic bugs with fix patterns of static analysis violations. In:Proc. of the 2019 IEEE 26th Int'l Conf. on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2019. 1-12.[doi:10.1109/SANER.2019.8667970]
    [92] Yue RR, Meng N, Wang QX. A characterization study of repeated bug fixes. In:Proc. of the 2017 IEEE Int'l Conf. on Software Maintenance and Evolution (ICSME). IEEE, 2017. 422-432.[doi:10.1109/ICSME.2017.16]
    [93] Jiang JJ, Ren LY, Xiong YF, Zhang LM. Inferring program transformations from singular examples via big code. In:Proc. of the 34th Int'l Conf. on Automated Software Engineering (ASE). IEEE, 2019. 255-266.[doi:10.1109/ASE.2019.00033]
    [94] Bhatia S, Kohli P, Singh R. Neuro-symbolic program corrector for introductory programming assignments. In:Proc. of the 40th Int'l Conf. on Software Engineering (ICSE). IEEE, 2018. 60-70.[doi:10.1145/3180155.3180219]
    [95] Tufano M, Watson C, Bavota G, Penta MD, White M, Poshyvanyk D. An empirical study on learning bug-fixing patches in the wild via neural machine translation. ACM Trans. on Software Engineering and Methodology, 2019,28(4):1-29.
    [96] See A, Liu PJ, Manning CD. Get to the point:Summarization with pointer-generator networks. In:Proc. of the 55th Annual Meering of the Association for Computational Lunguistics (ACL). ACM, 2017. 1073-1083.[doi:10.18653/v1/P17-1099]
    [97] Motwani M, Sankaranarayanan S, Just R, Brun Y. Do automated program repair techniques repair hard and important bugs? Empirical Software Engineering, 2018,23(5):2901-2947.
    [98] Yang DH, Qi YH, Mao XG. Evaluating the strategies of statement selection in automated program repair. In:Proc. of the Int'l Conf. on Software Analysis, Testing, and Evolution (SATE). Springer-Verlag, 2018. 33-48.
    [99] Liu K, Koyuncu A, Bissyandé TF, Kim D, Klein J, Le Traon Y. You cannot fix what you cannot find! An investigation of fault localization bias in benchmarking automated program repair systems. In:Proc. of the 201912th IEEE Conf. on Software Testing, Validation and Verification (ICST). IEEE, 2019. 102-113.[doi:10.1109/ICST.2019.00020]
    [100] Motwani M, Soto M, Brun Y, Just R, Le Goues C. Quality of automated program repair on real-world defects. IEEE Trans. on Software Engineering, 2020.[doi:10.1109/TSE.2020.2998785]
    [101] Le XBD, Thung F, Lo D, Le Goues C. Overfitting in semantics-based automated program repair. Empirical Software Engineering, 2018,23(5):3007-3033.
    [102] Jiang JJ, Xiong YF, Xia X. A manual inspection of defects4j bugs and its implications for automatic program repair. Science China Information Sciences, 2019,62(10):200102.[doi:10.1007/s11432-018-1465-6]
    [103] Lou YL, Ghanbari A, Li X, Zhang LM, Zhang HT, Hao D, Zhang L. Can automated program repair refine fault localization? A unified debugging approach. In:Proc. of the 29th ACM SIGSOFT Int'l Symp. on Software Testing and Analysis (ISSTA). 2020. 75-87.[doi:10.1145/3406889]
    [104] Noda K, Nemoto Y, Hotta K, Tanida H, Kikuchi S. Experience report:How effective is automated program repair for industrial software? In:Proc. of the 2020 IEEE 27th Int'l Conf. on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2020. 612-616.[doi:10.1109/SANER48275.2020.9054829]
    [105] Yi J, Tan SH, Mechtaev S, Bohme M, Roychoudhury A. A correlation study between automated program repair and test-suite metrics. Empirical Software Engineering, 2018,23(5):2948-2979.[doi:10.1007/s10664-017-9552-y]
    [106] Gao X, Mechtaev S, Roychoudhury A. Crash-avoiding program repair. In:Proc. of the 28th ACM SIGSOFT Int'l Symp. on Software Testing and Analysis (ISSTA). ACM, 2019. 8-18.[doi:10.1145/3293882.3330558]
    [107] Weimer W, Fry ZP, Forrest S. Leveraging program equivalence for adaptive program repair:Models and first results. In:Proc. of the 28th Int'l Conf. on Automated Software Engineering (ASE). IEEE, 2013. 356-366.[doi:10.1109/ASE.2013.6693094]
    [108] Le Goues C, Holtschulte N, Smith EK, Brun Y, Devanbu P, Forrest S, Weimer W. The ManyBugs and IntroClass benchmarks for automated repair of C programs. IEEE Trans. on Software Engineering, 2015,41(12):1236-1256.
    [109] Durieux T, Monperrus M. IntroClassJava:A benchmark of 297 small and buggy Java programs.[Research Report] hal-01272126. Universite Lille 1. 2016. https://hal.archives-ouvertes.fr/hal-01272126
    [110] Tan SH, Yi J, Mechtaev S, Roychoudhury A. Codeflaws:A programming competition benchmark for evaluating automated program repair tools. In:Proc. of the 39th Int'l Conf. on Software Engineering Companion (ICSE-C). IEEE, 2017. 180-182.[doi:10.1109/ICSE-C.2017.76]
    [111] Lin D, Koppel J, Chen A, Solar-Lezama A. QuixBugs:A multi-lingual program repair benchmark set based on the Quixey Challenge. In:Proc. Companion of the 2017 ACM SIGPLAN Int'l Conf. on Systems, Programming, Languages, and Applications:Software for Humanity. ACM, 2017. 55-56.[doi:10.1145/3135932.3135941]
    [112] Saha R, Lyu YJ, Lam W, Yoshida H, Prasad MR. Bugs.jar:A large-scale, diverse dataset of real-world Java bugs. In:Proc. of the 15th Int'l Conf. on Mining Software Repositories (MSR). IEEE, 2018. 10-13.
    [113] Madeiral F, Urli S, Maia M, Monperrus M. Bears:An extensible Java bug benchmark for automatic program repair studies. In:Proc. of the 2019 IEEE 26th Int'l Conf. on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2019. 468-478.[doi:10.1109/SANER.2019.8667991]
    [114] Tomassi DA, Dmeiri N, Wang YC, Bhowmick A, Liu YC, Devanbu PT, Vasilescu B, Rubio-González C. Bugswarm:Mining and continuously growing a dataset of reproducible failures and fixes. In:Proc. of the 41st Int'l Conf. on Software Engineering (ICSE). IEEE, 2019. 339-349.[doi:10.1109/ICSE.2019.00048]
    [115] Higo Y, Matsumoto S, Arima R, Tanikado A, Naitou K, Matsumoto J, Tomida Y, Kusumoto S. kGenProg:A high-performance, high-extensibility and high-portability APR system. In:Proc. of the 201825th Asia-Pacific Software Engineering Conf. (APSEC). IEEE, 2018. 697-698.[doi:10.1109/APSEC.2018.00094]
    [116] Martinez M, Monperrus M. Astor:Exploring the design space of generate-and-validate program repair beyond GenProg. Journal of Systems and Software, 2019,151:65-80.[doi:10.1016/j.jss.2019.01.069]
    附中文参考文献:
    [3] 玄跻峰,任志磊,王子元,谢晓园,江贺.自动程序修复方法研究进展.软件学报,2016,27(4):771-784. http://www.jos.org.cn/1000-9825/4972.html[doi:10.13328/j.cnki.jos.004972]
    [4] 王赞,郜健,陈翔,傅浩杰,樊向宇.自动程序修复方法研究述评.计算机学报,2018,41(3):588-610.
    [5] 李斌,贺也平,马恒太.程序自动修复:关键问题及技术.软件学报,2019,30(2):244-265. http://www.jos.org.cn/1000-9825/5657.html[doi:10.13328/j.cnki.jos.005657]
    [6] 刘斌斌,董威,王戟.智能化的程序搜索与构造方法综述.软件学报,2018,29(8):2180-2197. http://www.jos.org.cn/1000-9825/5529.html[doi:10.13328/j.cnki.jos.005529]
    引证文献
    网友评论
    网友评论
    分享到微博
    发 布
引用本文

姜佳君,陈俊洁,熊英飞.软件缺陷自动修复技术综述.软件学报,2021,32(9):2665-2690

复制
分享
文章指标
  • 点击次数:4816
  • 下载次数: 11620
  • HTML阅读次数: 8172
  • 引用次数: 0
历史
  • 收稿日期:2020-09-13
  • 最后修改日期:2020-10-26
  • 在线发布日期: 2021-01-15
  • 出版日期: 2021-09-06
文章二维码
您是第20434614位访问者
版权所有:中国科学院软件研究所 京ICP备05046678号-3
地址:北京市海淀区中关村南四街4号,邮政编码:100190
电话:010-62562563 传真:010-62562533 Email:jos@iscas.ac.cn
技术支持:北京勤云科技发展有限公司

京公网安备 11040202500063号