{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,20]],"date-time":"2026-01-20T03:36:55Z","timestamp":1768880215703,"version":"3.49.0"},"reference-count":33,"publisher":"Springer Science and Business Media LLC","issue":"2","license":[{"start":{"date-parts":[[2024,2,7]],"date-time":"2024-02-07T00:00:00Z","timestamp":1707264000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2024,2,7]],"date-time":"2024-02-07T00:00:00Z","timestamp":1707264000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Artif Intell Rev"],"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Automatic bug repair as the last step in program repair has attracted a lot of research attention. Various ideas and techniques have been presented in this field. Recent bug fixing techniques use machine learning and graphs to generate fixes. Despite the promising results of recent approaches, maintaining high speed and accuracy as well as recording a wide range of errors may still be a problem. In this paper, a new approach is presented in the field of automatic bug fixing based on graphs and model checking. For this purpose, we have used the graph transformation and model checking system to create a sequence of edits and produce fixes. Then, using meta-heuristic algorithms, we have selected the best solution and fix from the generated solutions. We use the extracted graphs from the buggy JavaScript code and their corresponding bug-free ones. In evaluating the effectiveness of the proposed method, we implement it in GROOVE, which is a toolbox used to design and check graph transformation systems. Experimental results on identical dataset demonstrate that the proposed method outperforms other related methods in generating fixes. Also, this method covers a wider range of bugs compared to previous methods.<\/jats:p>","DOI":"10.1007\/s10462-023-10686-y","type":"journal-article","created":{"date-parts":[[2024,2,7]],"date-time":"2024-02-07T06:02:20Z","timestamp":1707285740000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":3,"title":["Automatic program bug fixing by focusing on finding the shortest sequence of changes"],"prefix":"10.1007","volume":"57","author":[{"given":"Leila","family":"Yousofvand","sequence":"first","affiliation":[]},{"given":"Seyfollah","family":"Soleimani","sequence":"additional","affiliation":[]},{"given":"Vahid","family":"Rafe","sequence":"additional","affiliation":[]},{"given":"Sajad","family":"Esfandyari","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2024,2,7]]},"reference":[{"key":"10686_CR1","unstructured":"Allamanis M, Brockschmidt M, Khademi M (2018) Learning to represent programs with graphs. In: International conference on learning representations (ICLR)"},{"key":"10686_CR2","volume-title":"Principles of Model Checking","author":"C Baier","year":"2008","unstructured":"Baier C, Katoen J-P (2008) Principles of Model Checking. MIT Press, New York"},{"key":"10686_CR3","unstructured":"Berabi B, He J, Raychev V, Vechev M (2021) TFix: learning to fix coding errors with a text-to-text transformer. In: International conference on machine learning"},{"issue":"9","key":"10686_CR4","first-page":"1943","volume":"47","author":"Z Chen","year":"2019","unstructured":"Chen Z, Kommrusch S, Tufano M, Pouchet L-N, Poshyvanyk D, Monperrus M (2019) SequenceR: sequence-to-sequence learning for end-to-end program repair. IEEE Trans Softw Eng 47(9):1943\u20131959","journal-title":"IEEE Trans Softw Eng"},{"key":"10686_CR5","doi-asserted-by":"crossref","unstructured":"de Lara J, Vangheluwe H (2002) AToM3: a tool for multi-formalism and meta-modelling. In: Fundamental approaches to software engineering (FASE)","DOI":"10.1007\/3-540-45923-5_12"},{"key":"10686_CR6","unstructured":"Dinella E, Dai H, Li Z, Naik M, Song L, Wang K (2020) Hoppity: learning graph transformations to detect and fix bugs in programs. In: International conference on learning representations (ICLR)"},{"key":"10686_CR7","doi-asserted-by":"publisher","first-page":"165","DOI":"10.1016\/j.infsof.2017.10.007","volume":"94","author":"S Esfandyari","year":"2018","unstructured":"Esfandyari S, Rafe V (2018) A tuned version of genetic algorithm for efficient test suite generation in interactive t-way testing strategy. Inf Softw Technol 94:165\u2013185","journal-title":"Inf Softw Technol"},{"key":"10686_CR8","doi-asserted-by":"publisher","DOI":"10.1016\/j.asoc.2020.106219","volume":"91","author":"S Esfandyari","year":"2020","unstructured":"Esfandyari S, Rafe V (2020) Extracting combinatorial test parameters and their values using model checking and evolutionary algorithms. Appl Soft Comput 91:106219","journal-title":"Appl Soft Comput"},{"issue":"11","key":"10686_CR9","doi-asserted-by":"publisher","first-page":"7673","DOI":"10.1007\/s00500-021-05788-0","volume":"25","author":"S Esfandyari","year":"2021","unstructured":"Esfandyari S, Rafe V (2021) GALP: a hybrid artificial intelligence algorithm for generating covering array. Soft Comput 25(11):7673\u20137689","journal-title":"Soft Comput"},{"key":"10686_CR10","doi-asserted-by":"crossref","unstructured":"Fischer B, Saabas A, Uustalu T (2009) Program repair as sound optimization of broken programs. In: 2009 third IEEE international symposium on theoretical aspects of software engineering","DOI":"10.1109\/TASE.2009.61"},{"key":"10686_CR11","doi-asserted-by":"crossref","unstructured":"Forrest S, Nguyen T, Weimer W, Le Goues C (2009) A genetic programming approach to automated software repair. In: Proceedings of the 11th annual conference on genetic and evolutionary computation","DOI":"10.1145\/1569901.1570031"},{"key":"10686_CR12","unstructured":"https:\/\/github.com\/AI-nstein\/hoppity"},{"key":"10686_CR13","doi-asserted-by":"crossref","unstructured":"Kalvala S, Warburton R (2011) A formal approach to fixing bugs. In: Formal methods, foundations and applications","DOI":"10.1007\/978-3-642-25032-3_12"},{"key":"10686_CR14","doi-asserted-by":"crossref","unstructured":"Kastenberg H, Rensink A (2006) Model checking dynamic states in GROOVE. In: International SPIN workshop on model checking of software","DOI":"10.1007\/11691617_19"},{"key":"10686_CR15","unstructured":"Kennedy J, Eberhart R (1995) Particle swarm optimization. In: Proceedings of ICNN'95\u2014international conference on neural networks"},{"issue":"1","key":"10686_CR16","doi-asserted-by":"publisher","first-page":"54","DOI":"10.1109\/TSE.2011.104","volume":"38","author":"C Le Goues","year":"2012","unstructured":"Le Goues C, Nguyen T, Forrest S, Weimer W (2012) GenProg: a generic method for automatic software repair. IEEE Trans Softw Eng 38(1):54\u201372","journal-title":"IEEE Trans Softw Eng"},{"issue":"11","key":"10686_CR17","doi-asserted-by":"publisher","first-page":"2369","DOI":"10.1109\/TSE.2019.2948351","volume":"47","author":"G Liva","year":"2019","unstructured":"Liva G, Taimoor Khan M, Pinzger M, Spegni F, Spalazzi L (2019) Automatic repair of timestamp comparisons. IEEE Trans Softw Eng 47(11):2369\u20132381","journal-title":"IEEE Trans Softw Eng"},{"key":"10686_CR18","doi-asserted-by":"crossref","unstructured":"Mahajan S, Alameer A, McMinn P, Halfond WGJ (2018) Automated repair of internationalization presentation failures in web pages using style similarity clustering and search-based techniques. In: International conference on software testing, verification and validation","DOI":"10.1109\/ICST.2018.00030"},{"key":"10686_CR19","volume-title":"Encyclopedia of physical science and technology","author":"RA Meyers","year":"2001","unstructured":"Meyers RA (2001) Encyclopedia of physical science and technology, 3rd edn. Academic Press, New York","edition":"3"},{"key":"10686_CR20","doi-asserted-by":"crossref","unstructured":"Nilizadeh A, Leavens GT, Le X-BD, P\u0103s\u0103reanu CS, Cok DR (2021) Exploring true test overfitting in dynamic automated program repair using formal methods. In: 2021 14th IEEE conference on software testing, verification and validation (ICST), 2021.","DOI":"10.1109\/ICST49551.2021.00033"},{"key":"10686_CR21","doi-asserted-by":"crossref","unstructured":"Oliveira VPL, Souza E, Le Goues C, Camilo-Junior C (2016) Improved crossover operators for genetic programming for program repair. In: International symposium on search based software engineering","DOI":"10.1007\/978-3-319-47106-8_8"},{"issue":"1","key":"10686_CR22","doi-asserted-by":"publisher","first-page":"37","DOI":"10.1007\/s11219-020-09542-x","volume":"30","author":"E Pira","year":"2021","unstructured":"Pira E (2021) Using knowledge discovery to propose a two- phase model checking for safety analysis of graph transformations. Softw Qual J 30(1):37\u201364","journal-title":"Softw Qual J"},{"key":"10686_CR23","doi-asserted-by":"publisher","first-page":"181","DOI":"10.1016\/j.jss.2017.05.128","volume":"131","author":"E Pira","year":"2017","unstructured":"Pira E, Rafe V, Nikanjam A (2017) Deadlock detection in complex software systems specified through graph transformation using bayesian optimization algorithm. J Syst Softw 131:181\u2013200","journal-title":"J Syst Softw"},{"key":"10686_CR24","doi-asserted-by":"publisher","first-page":"110","DOI":"10.1016\/j.infsof.2018.01.004","volume":"97","author":"E Pira","year":"2018","unstructured":"Pira E, Rafe V, Nikanjam A (2018) Searching for violation of safety and liveness properties using knowledge discovery in complex systems specified through graph transformations. Inf Softw Technol 97:110\u2013134","journal-title":"Inf Softw Technol"},{"key":"10686_CR25","doi-asserted-by":"publisher","DOI":"10.1016\/j.ress.2019.106577","volume":"191","author":"E Pira","year":"2019","unstructured":"Pira E, Rafe V, Nikanjam A (2019) Using evolutionary algorithms for reachability analysis of complex software systems specified through graph transformation. Reliab Eng Syst Saf 191:106577","journal-title":"Reliab Eng Syst Saf"},{"key":"10686_CR26","doi-asserted-by":"publisher","DOI":"10.1142\/3303","volume-title":"Handbook of Graph Grammars and Computing by Graph Transformation","author":"G Rozenberg","year":"1997","unstructured":"Rozenberg G (1997) Handbook of Graph Grammars and Computing by Graph Transformation. World scientific, Singapore"},{"key":"10686_CR27","doi-asserted-by":"crossref","unstructured":"Taentzer G (2003) AGG: a graph transformation environment for modeling and validation of software. In: International workshop on applications of graph transformations with industrial relevance","DOI":"10.1007\/978-3-540-25959-6_35"},{"issue":"4","key":"10686_CR28","doi-asserted-by":"publisher","first-page":"36","DOI":"10.1109\/MS.2021.3070552","volume":"38","author":"L Trujillo","year":"2021","unstructured":"Trujillo L, Villanueva OM, Eduardo Hernandez D (2021) A novel approach for search-based program repair. IEEE Softw 38(4):36\u201342","journal-title":"IEEE Softw"},{"key":"10686_CR29","doi-asserted-by":"crossref","unstructured":"Tufano M, Watson C, Bavota G, Di Penta M, White M, Poshyvanyk D (2018) An empirical investigation into learning bug-fixing patches in the wild via neural machine translation. In: Proceedings of the 33rd ACM\/IEEE international conference on automated software engineering","DOI":"10.1145\/3238147.3240732"},{"key":"10686_CR30","doi-asserted-by":"publisher","first-page":"214","DOI":"10.1016\/j.scico.2007.05.004","volume":"68","author":"D Varr\u00f3","year":"2007","unstructured":"Varr\u00f3 D, Balogh A (2007) The model transformation language of the VIATRA2 framework. Sci Comput Programm 68:214\u2013234","journal-title":"Sci Comput Programm"},{"issue":"5","key":"10686_CR31","doi-asserted-by":"publisher","first-page":"109","DOI":"10.1145\/1735223.1735249","volume":"53","author":"W Weimer","year":"2010","unstructured":"Weimer W, Forrest S, Le Goues C, Nguyen T (2010) Automatic program repair with evolutionary computation. Commun ACM 53(5):109\u2013116","journal-title":"Commun ACM"},{"key":"10686_CR32","doi-asserted-by":"crossref","unstructured":"Yousofvand L, Soleimani S, Rafe V (2023) Automatic bug localization using a combination of deep learning and model transformation through node classification. Softw Qual J","DOI":"10.1007\/s11219-023-09625-5"},{"key":"10686_CR33","doi-asserted-by":"crossref","unstructured":"Yuan W, Zhang Q, He T, Fang C, Viet Hung NQ, Hao X, Yin H (2022) CIRCLE: continual repair across programming languages. In: Proceedings of the 31st ACM SIGSOFT international symposium on software testing and analysis","DOI":"10.1145\/3533767.3534219"}],"container-title":["Artificial Intelligence Review"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10462-023-10686-y.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10462-023-10686-y\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10462-023-10686-y.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,2,20]],"date-time":"2024-02-20T09:46:17Z","timestamp":1708422377000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10462-023-10686-y"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,2,7]]},"references-count":33,"journal-issue":{"issue":"2","published-online":{"date-parts":[[2024,2]]}},"alternative-id":["10686"],"URL":"https:\/\/doi.org\/10.1007\/s10462-023-10686-y","relation":{},"ISSN":["1573-7462"],"issn-type":[{"value":"1573-7462","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,2,7]]},"assertion":[{"value":"7 February 2024","order":1,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"The authors declare no competing interests.","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"Competing interests"}}],"article-number":"39"}}