{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,9,1]],"date-time":"2024-09-01T10:50:55Z","timestamp":1725187855591},"reference-count":54,"publisher":"Springer Science and Business Media LLC","issue":"2","license":[{"start":{"date-parts":[[2024,2,12]],"date-time":"2024-02-12T00:00:00Z","timestamp":1707696000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"},{"start":{"date-parts":[[2024,2,12]],"date-time":"2024-02-12T00:00:00Z","timestamp":1707696000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"}],"funder":[{"DOI":"10.13039\/501100000038","name":"Natural Sciences and Engineering Research Council of Canada","doi-asserted-by":"publisher","id":[{"id":"10.13039\/501100000038","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2024,3]]},"DOI":"10.1007\/s10664-023-10437-1","type":"journal-article","created":{"date-parts":[[2024,2,12]],"date-time":"2024-02-12T15:04:52Z","timestamp":1707750292000},"update-policy":"http:\/\/dx.doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["A study of common bug fix patterns in Rust"],"prefix":"10.1007","volume":"29","author":[{"ORCID":"http:\/\/orcid.org\/0000-0002-6297-8229","authenticated-orcid":false,"given":"Mohammad","family":"Robati\u00a0Shirzad","sequence":"first","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0001-8278-5400","authenticated-orcid":false,"given":"Patrick","family":"Lam","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2024,2,12]]},"reference":[{"issue":"4","key":"10437_CR1","doi-asserted-by":"publisher","first-page":"404","DOI":"10.1145\/3296979.3192412","volume":"53","author":"U Alon","year":"2018","unstructured":"Alon U, Zilberstein M, Levy O, Yahav E (2018) A general path-based representation for predicting program properties. ACM SIGPLAN Not 53(4):404\u2013419","journal-title":"ACM SIGPLAN Not"},{"key":"10437_CR2","unstructured":"Alon U, Zilberstein M, Levy O, Yahav E (2019a) code2seq: Generating sequences from structured representations of code. In: Proceedings of the 2019 Conference of the Association for Computational Linguistics (ACL). pp 6304\u20136315"},{"key":"10437_CR3","doi-asserted-by":"crossref","unstructured":"Alon U, Zilberstein M, Levy O, Yahav E (2019b) code2vec: Learning distributed representations of code. Proc ACM Program Lang 3(POPL):1\u201329","DOI":"10.1145\/3290353"},{"key":"10437_CR4","doi-asserted-by":"crossref","unstructured":"Arcuri A, Briand L (2011) A practical guide for using statistical tests to assess randomized algorithms in software engineering. In: Proceedings of the 33rd international conference on software engineering. pp 1\u201310","DOI":"10.1145\/1985793.1985795"},{"key":"10437_CR5","doi-asserted-by":"crossref","unstructured":"Bielik P, Raychev V, Vechev M (2016) PHOG: Probabilistic model for code. In: International conference on machine learning. pp 2933\u20132942","DOI":"10.1145\/2983990.2984041"},{"issue":"7","key":"10437_CR6","first-page":"1","volume":"31","author":"EC Campos","year":"2019","unstructured":"Campos EC, Maia MA (2019) Discovering common bug-fix patterns: A large-scale observational study. J Softw: Evol Process 31(7):1\u201328","journal-title":"J Softw: Evol Process"},{"key":"10437_CR7","volume-title":"Recommended C style and coding standards","author":"L Cannon","year":"1991","unstructured":"Cannon L, Elliott R, Kirchhoff L, Miller J, Milner J, Mitze R, Schan E, Whittington N, Spencer H, Keppel D et al (1991) Recommended C style and coding standards. Pocket reference guide, Specialized Systems Consultants"},{"key":"10437_CR8","unstructured":"Chen Z, Monperrus M (2019) A literature study of embeddings on source code. arXiv:1904.03061"},{"issue":"3","key":"10437_CR9","first-page":"233","volume":"25","author":"CR Collins","year":"2003","unstructured":"Collins CR, Stephenson K (2003) A circle packing algorithm. Comput Geom 25(3):233\u2013256","journal-title":"A circle packing algorithm. Comput Geom"},{"key":"10437_CR10","doi-asserted-by":"crossref","unstructured":"Cotroneo D, De\u00a0Simone L, Iannillo A\u00a0K, Natella R, Rosiello S, Bidokhti N (2019) Analyzing the context of bug-fixing changes in the OpenStack cloud computing platform. In: 2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE). IEEE, pp 334\u2013345","DOI":"10.1109\/ISSRE.2019.00041"},{"key":"10437_CR11","unstructured":"DeGroot M\u00a0H, Schervish M\u00a0J (2012) Probability and statistics. Pearson Education"},{"issue":"1","key":"10437_CR12","doi-asserted-by":"publisher","first-page":"140","DOI":"10.1109\/TSE.1975.6312834","volume":"1","author":"A Endres","year":"1975","unstructured":"Endres A (1975) An analysis of errors and their causes in system programs. IEEE Trans Softw Eng 1(1):140\u2013149","journal-title":"IEEE Trans Softw Eng"},{"key":"10437_CR13","unstructured":"Ester M, Kriegel H-P, Sander J, Xu X et\u00a0al (1996) A density-based algorithm for discovering clusters in large spatial databases with noise. In: KDD. pp 226\u2013231"},{"key":"10437_CR14","unstructured":"Eyolfson J (2018) Enforcing Abstract Immutability. PhD thesis, University of Waterloo"},{"key":"10437_CR15","unstructured":"Flanagan C, Felleisen M (1998) A new way of debugging Lisp programs. In: Proceedings of Lisp Users\u2019 Group Meeting (LUGM)"},{"key":"10437_CR16","doi-asserted-by":"crossref","unstructured":"Forrest S, Nguyen T, Weimer W, Le\u00a0Goues C (2009) A genetic programming approach to automated software repair. In: Proceedings of the 11th annual conference on genetic and evolutionary computation. pp 947\u2013954","DOI":"10.1145\/1569901.1570031"},{"key":"10437_CR17","unstructured":"Gopinath R, Jensen C, Groce A et\u00a0al (2015) Mutant census: An empirical examination of the competent programmer hypothesis. Technical Report, School of EECS, Oregon State University"},{"key":"10437_CR18","doi-asserted-by":"crossref","unstructured":"Hanam Q, Brito FSd\u00a0M, Mesbah A (2016) Discovering bug patterns in JavaScript. In: Proceedings of the 2016 24th ACM SIGSOFT international symposium on foundations of software engineering. pp 144\u2013156","DOI":"10.1145\/2950290.2950308"},{"issue":"5","key":"10437_CR19","doi-asserted-by":"publisher","first-page":"122","DOI":"10.1145\/2902362","volume":"59","author":"A Hindle","year":"2016","unstructured":"Hindle A, Barr ET, Gabel M, Su Z, Devanbu P (2016) On the naturalness of software. Commun ACM 59(5):122\u2013131","journal-title":"Commun ACM"},{"key":"10437_CR20","doi-asserted-by":"crossref","unstructured":"Hoang T, Kang H\u00a0J, Lo D, Lawall J (2020) CC2Vec: Distributed representations of code changes. In: Proceedings of the ACM\/IEEE 42nd international conference on software engineering. pp 518\u2013529","DOI":"10.1145\/3377811.3380361"},{"key":"10437_CR21","first-page":"879","volume-title":"OOPSLA 2012, Object-Oriented Programming Systems, Languages, and Applications","author":"W Huang","year":"2012","unstructured":"Huang W, Milanova A, Dietl W, Ernst MD (2012) ReIm & ReImInfer: Checking and inference of reference immutability and method purity. OOPSLA 2012, Object-Oriented Programming Systems, Languages, and Applications. Tucson, AZ, USA, pp 879\u2013896"},{"issue":"4","key":"10437_CR22","doi-asserted-by":"publisher","first-page":"18","DOI":"10.1145\/3447332.3447334","volume":"20","author":"MR Islam","year":"2021","unstructured":"Islam MR, Zibran MF (2021) What changes in where? An empirical study of bug-fixing change patterns. ACM SIGAPP Appl Comput Rev 20(4):18\u201334","journal-title":"ACM SIGAPP Appl Comput Rev"},{"key":"10437_CR23","doi-asserted-by":"crossref","unstructured":"Jeffrey D, Feng M, Gupta N, Gupta R (2009) Bugfix: A learning-based tool to assist developers in fixing bugs. In: 2009 IEEE 17th international conference on program comprehension. IEEE, pp 70\u201379","DOI":"10.1109\/ICPC.2009.5090029"},{"key":"10437_CR24","doi-asserted-by":"crossref","unstructured":"Jones J\u00a0A, Harrold M\u00a0J (2005) Empirical evaluation of the Tarantula automatic fault-localization technique. In: Proceedings of the 20th IEEE\/ACM international conference on automated software engineering. pp 273\u2013282","DOI":"10.1145\/1101908.1101949"},{"key":"10437_CR25","unstructured":"Klabnik S, Nichols C (2019) The Rust programming language (Covers Rust 2018). No Starch Press"},{"issue":"7","key":"10437_CR26","doi-asserted-by":"publisher","first-page":"607","DOI":"10.1002\/spe.4380190702","volume":"19","author":"DE Knuth","year":"1989","unstructured":"Knuth DE (1989) The errors of TeX. Softw-Pract Exper 19(7):607\u2013685","journal-title":"Softw-Pract Exper"},{"key":"10437_CR27","doi-asserted-by":"crossref","unstructured":"Le\u00a0Goues C, Dewey-Vogt M, Forrest S, Weimer W (2012) A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each. In: 2012 34th International Conference on Software Engineering (ICSE). IEEE, pp 3\u201313","DOI":"10.1109\/ICSE.2012.6227211"},{"issue":"12","key":"10437_CR28","doi-asserted-by":"publisher","first-page":"56","DOI":"10.1145\/3318162","volume":"62","author":"C Le Goues","year":"2019","unstructured":"Le Goues C, Pradel M, Roychoudhury A (2019) Automated program repair. Commun ACM 62(12):56\u201365","journal-title":"Commun ACM"},{"key":"10437_CR29","doi-asserted-by":"crossref","unstructured":"Li Z, Wang J, Sun M, Lui J\u00a0C (2021) MirChecker: Detecting bugs in rust programs via static analysis. In: Proceedings of the 2021 ACM SIGSAC conference on computer and communications security. pp 2183\u20132196","DOI":"10.1145\/3460120.3484541"},{"issue":"3","key":"10437_CR30","first-page":"1","volume":"31","author":"B Lin","year":"2022","unstructured":"Lin B, Wang S, Wen M, Mao X (2022) Context-aware code change embedding for better patch correctness assessment. ACM Trans Softw Eng Methodol (TOSEM) 31(3):1\u201329","journal-title":"ACM Trans Softw Eng Methodol (TOSEM)"},{"key":"10437_CR31","doi-asserted-by":"crossref","unstructured":"Ling M, Yu Y, Wu H, Wang Y, Cordy J\u00a0R, Hassan A\u00a0E (2022) In Rust we trust: a transpiler from unsafe C to safer Rust. In: Proceedings of the ACM\/IEEE 44th international conference on software engineering: companion proceedings. pp 354\u2013355","DOI":"10.1145\/3510454.3528640"},{"issue":"8","key":"10437_CR32","doi-asserted-by":"publisher","first-page":"437","DOI":"10.17706\/jsw.13.8.437-452","volume":"13","author":"Y Liu","year":"2018","unstructured":"Liu Y, Zhang L, Zhang Z (2018) A survey of test based automatic program repair. J. Softw. 13(8):437\u2013452","journal-title":"J. Softw."},{"key":"10437_CR33","unstructured":"Madeiral F, Durieux T, Sobreira V, Maia M (2018) Towards an automated approach for bug fix pattern detection. arXiv:1807.11286"},{"key":"10437_CR34","unstructured":"Martinez M, Monperrus M (2012) Mining repair actions for guiding automated program fixing. PhD thesis, Inria"},{"issue":"1","key":"10437_CR35","doi-asserted-by":"publisher","first-page":"176","DOI":"10.1007\/s10664-013-9282-8","volume":"20","author":"M Martinez","year":"2015","unstructured":"Martinez M, Monperrus M (2015) Mining software repair models for reasoning on the search space of automated program fixing. Emp Softw Eng 20(1):176\u2013205","journal-title":"Emp Softw Eng"},{"key":"10437_CR36","doi-asserted-by":"crossref","unstructured":"Monperrus M (2014) \u201cA critical review of automatic patch generation learned from human-written patches\u201d: Essay on the problem statement and the evaluation of automatic software repair. In: Proceedings of the 36th international conference on software engineering. pp 234\u2013242","DOI":"10.1145\/2568225.2568324"},{"key":"10437_CR37","unstructured":"Moss S (2021) How Dropbox pulled off its hybrid cloud transition. https:\/\/www.datacenterdynamics.com\/en\/analysis\/how-dropbox-pulled-off-its-hybrid-cloud-transition\/. November 21, 2022"},{"key":"10437_CR38","doi-asserted-by":"crossref","unstructured":"Naish L, Lee H\u00a0J, Ramamohanarao K (2009) Spectral debugging with weights and incremental ranking. In: 2009 16th Asia-pacific software engineering conference. IEEE, pp 168\u2013175","DOI":"10.1109\/APSEC.2009.32"},{"key":"10437_CR39","doi-asserted-by":"crossref","unstructured":"Nguyen T, Weimer W, Le\u00a0Goues C, Forrest S (2009) Using execution paths to evolve software patches. In: 2009 International conference on software testing, verification, and validation workshops. IEEE, pp 152\u2013153","DOI":"10.1109\/ICSTW.2009.35"},{"issue":"3","key":"10437_CR40","doi-asserted-by":"publisher","first-page":"286","DOI":"10.1007\/s10664-008-9077-5","volume":"14","author":"K Pan","year":"2009","unstructured":"Pan K, Kim S, Whitehead EJ (2009) Toward an understanding of bug fix patterns. Emp Softw Eng 14(3):286\u2013315","journal-title":"Emp Softw Eng"},{"key":"10437_CR41","doi-asserted-by":"crossref","unstructured":"Qi Y, Mao X, Lei Y (2013) Efficient automated program repair through fault-recorded testing prioritization. In 2013 IEEE International Conference on Software Maintenance. IEEE, pp 180\u2013189","DOI":"10.1109\/ICSM.2013.29"},{"key":"10437_CR42","doi-asserted-by":"crossref","unstructured":"Qi Y, Mao X, Lei Y, Dai Z, Wang C (2014) The strength of random search on automated program repair. In Proceedings of the 36th International Conference on Software Engineering. pp 254\u2013265","DOI":"10.1145\/2568225.2568254"},{"key":"10437_CR43","doi-asserted-by":"crossref","unstructured":"Qin B, Chen Y, Yu Z, Song L, Zhang Y (2020) Understanding memory and thread safety practices and issues in real-world Rust programs. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation. pp 763\u2013779","DOI":"10.1145\/3385412.3386036"},{"key":"10437_CR44","doi-asserted-by":"crossref","unstructured":"Raychev V, Bielik P, Vechev M, Krause A (2016) Learning programs from noisy data. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL \u201916. page 761-774, Association for Computing Machinery, New York, NY, USA","DOI":"10.1145\/2837614.2837671"},{"key":"10437_CR45","doi-asserted-by":"crossref","unstructured":"Sam G, Cameron N, Potanin A (2017) Automated refactoring of Rust programs. In Proceedings of the Australasian Computer Science Week Multiconference. pp 1\u20139","DOI":"10.1145\/3014812.3014826"},{"key":"10437_CR46","doi-asserted-by":"crossref","unstructured":"Spadini D, Aniche M, Bacchelli A (2018) Pydriller: Python framework for mining software repositories. In Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. pp 908\u2013911","DOI":"10.1145\/3236024.3264598"},{"key":"10437_CR47","doi-asserted-by":"crossref","unstructured":"Tan S\u00a0H, Roychoudhury A (2015) relifix: Automated repair of software regressions. In 2015 IEEE\/ACM 37th IEEE International Conference on Software Engineering volume\u00a01. IEEE, pp 471\u2013482","DOI":"10.1109\/ICSE.2015.65"},{"key":"10437_CR48","doi-asserted-by":"crossref","unstructured":"Tian H, Tang X, Habib A, Wang S, Liu K, Xia X, Klein J, Bissyand\u00e9 T\u00a0F (2022) Is this change the answer to that problem? Correlating descriptions of bug and code changes for evaluating patch correctness. In Proceedings of the 37th IEEE\/ACM International Conference on Automated Software Engineering. pp 1\u201313","DOI":"10.1145\/3551349.3556914"},{"issue":"8","key":"10437_CR49","doi-asserted-by":"publisher","first-page":"707","DOI":"10.1109\/TSE.2016.2521368","volume":"42","author":"WE Wong","year":"2016","unstructured":"Wong WE, Gao R, Li Y, Abreu R, Wotawa F (2016) A survey on software fault localization. IEEE Trans Softw Eng 42(8):707\u2013740","journal-title":"IEEE Trans Softw Eng"},{"issue":"4","key":"10437_CR50","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/2522920.2522924","volume":"22","author":"X Xie","year":"2013","unstructured":"Xie X, Chen TY, Kuo F-C, Xu B (2013) A theoretical analysis of the risk evaluation formulas for spectrum-based fault localization. ACM Trans Softw Eng Methodol (TOSEM) 22(4):1\u201340","journal-title":"ACM Trans Softw Eng Methodol (TOSEM)"},{"issue":"3","key":"10437_CR51","doi-asserted-by":"publisher","first-page":"645","DOI":"10.1109\/TNN.2005.845141","volume":"16","author":"R Xu","year":"2005","unstructured":"Xu R, Wunsch D (2005) Survey of clustering algorithms. IEEE Trans Neural Netw 16(3):645\u2013678","journal-title":"IEEE Trans Neural Netw"},{"issue":"2","key":"10437_CR52","first-page":"1","volume":"27","author":"Y Yang","year":"2022","unstructured":"Yang Y, He T, Feng Y, Liu S, Xu B (2022) Mining Python fix patterns via analyzing fine-grained source code changes. Emp Softw Eng 27(2):1\u201337","journal-title":"Emp Softw Eng"},{"issue":"8","key":"10437_CR53","doi-asserted-by":"publisher","first-page":"2920","DOI":"10.1109\/TSE.2021.3071750","volume":"48","author":"H Ye","year":"2021","unstructured":"Ye H, Gu J, Martinez M, Durieux T, Monperrus M (2021) Automated classification of overfitting patches with statically extracted code features. IEEE Trans Softw Eng 48(8):2920\u20132938","journal-title":"IEEE Trans Softw Eng"},{"key":"10437_CR54","doi-asserted-by":"crossref","unstructured":"Zhang Y, Chen Y, Cheung S-C, Xiong Y, Zhang L (2018) An empirical study on TensorFlow program bugs. In Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis. pp 129\u2013140","DOI":"10.1145\/3213846.3213866"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-023-10437-1.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-023-10437-1\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-023-10437-1.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,3,23]],"date-time":"2024-03-23T02:23:07Z","timestamp":1711160587000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-023-10437-1"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,2,12]]},"references-count":54,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2024,3]]}},"alternative-id":["10437"],"URL":"https:\/\/doi.org\/10.1007\/s10664-023-10437-1","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,2,12]]},"assertion":[{"value":"10 December 2023","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"12 February 2024","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"We have no competing interests and are funded by a Discovery Grant from Canada\u2019s Natural Science and Engineering Research Council","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"Competing Interests"}}],"article-number":"44"}}