MELT: Mining Effective Lightweight Transformations from Pull Requests

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Ramos, Daniel, Mitchell, Hailie, Lynce, Inês, Manquinho, Vasco, Martins, Ruben, Goues, Claire Le
Formato: Preprint
Publicado: 2023
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866916316010512384
author Ramos, Daniel
Mitchell, Hailie
Lynce, Inês
Manquinho, Vasco
Martins, Ruben
Goues, Claire Le
author_facet Ramos, Daniel
Mitchell, Hailie
Lynce, Inês
Manquinho, Vasco
Martins, Ruben
Goues, Claire Le
contents Software developers often struggle to update APIs, leading to manual, time-consuming, and error-prone processes. We introduce MELT, a new approach that generates lightweight API migration rules directly from pull requests in popular library repositories. Our key insight is that pull requests merged into open-source libraries are a rich source of information sufficient to mine API migration rules. By leveraging code examples mined from the library source and automatically generated code examples based on the pull requests, we infer transformation rules in \comby, a language for structural code search and replace. Since inferred rules from single code examples may be too specific, we propose a generalization procedure to make the rules more applicable to client projects. MELT rules are syntax-driven, interpretable, and easily adaptable. Moreover, unlike previous work, our approach enables rule inference to seamlessly integrate into the library workflow, removing the need to wait for client code migrations. We evaluated MELT on pull requests from four popular libraries, successfully mining 461 migration rules from code examples in pull requests and 114 rules from auto-generated code examples. Our generalization procedure increases the number of matches for mined rules by 9x. We applied these rules to client projects and ran their tests, which led to an overall decrease in the number of warnings and fixing some test cases demonstrating MELT's effectiveness in real-world scenarios.
format Preprint
id arxiv_https___arxiv_org_abs_2308_14687
institution arXiv
publishDate 2023
record_format arxiv
spellingShingle MELT: Mining Effective Lightweight Transformations from Pull Requests
Ramos, Daniel
Mitchell, Hailie
Lynce, Inês
Manquinho, Vasco
Martins, Ruben
Goues, Claire Le
Software Engineering
Artificial Intelligence
Software developers often struggle to update APIs, leading to manual, time-consuming, and error-prone processes. We introduce MELT, a new approach that generates lightweight API migration rules directly from pull requests in popular library repositories. Our key insight is that pull requests merged into open-source libraries are a rich source of information sufficient to mine API migration rules. By leveraging code examples mined from the library source and automatically generated code examples based on the pull requests, we infer transformation rules in \comby, a language for structural code search and replace. Since inferred rules from single code examples may be too specific, we propose a generalization procedure to make the rules more applicable to client projects. MELT rules are syntax-driven, interpretable, and easily adaptable. Moreover, unlike previous work, our approach enables rule inference to seamlessly integrate into the library workflow, removing the need to wait for client code migrations. We evaluated MELT on pull requests from four popular libraries, successfully mining 461 migration rules from code examples in pull requests and 114 rules from auto-generated code examples. Our generalization procedure increases the number of matches for mined rules by 9x. We applied these rules to client projects and ran their tests, which led to an overall decrease in the number of warnings and fixing some test cases demonstrating MELT's effectiveness in real-world scenarios.
title MELT: Mining Effective Lightweight Transformations from Pull Requests
topic Software Engineering
Artificial Intelligence
url https://arxiv.org/abs/2308.14687