Automated Refactoring of Legacy JavaScript Code to ES6 Modules

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Paltoglou, Katerina, Zafeiris, Vassilis E., Diamantidis, N. A., Giakoumakis, E. A.
Formato: Preprint
Publicado: 2021
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866911604611743744
author Paltoglou, Katerina
Zafeiris, Vassilis E.
Diamantidis, N. A.
Giakoumakis, E. A.
author_facet Paltoglou, Katerina
Zafeiris, Vassilis E.
Diamantidis, N. A.
Giakoumakis, E. A.
contents The JavaScript language did not specify, until ECMAScript 6 (ES6), native features for streamlining encapsulation and modularity. Developer community filled the gap with a proliferation of design patterns and module formats, with impact on code reusability, portability and complexity of build configurations. This work studies the automated refactoring of legacy ES5 code to ES6 modules with fine-grained reuse of module contents through the named import/export language constructs. The focus is on reducing the coupling of refactored modules through destructuring exported module objects to fine-grained module features and enhancing module dependencies by leveraging the ES6 syntax. We employ static analysis to construct a model of a JavaScript project, the Module Dependence Graph (MDG), that represents modules and their dependencies. On the basis of MDG we specify the refactoring procedure for module migration to ES6. A prototype implementation has been empirically evaluated on 19 open source projects. Results highlight the relevance of the refactoring with a developer intent for fine-grained reuse. The analysis of refactored code shows an increase in the number of reusable elements per project and reduction in the coupling of refactored modules. The soundness of the refactoring is empirically validated through code inspection and execution of projects' test suites.
format Preprint
id arxiv_https___arxiv_org_abs_2107_10164
institution arXiv
publishDate 2021
record_format arxiv
spellingShingle Automated Refactoring of Legacy JavaScript Code to ES6 Modules
Paltoglou, Katerina
Zafeiris, Vassilis E.
Diamantidis, N. A.
Giakoumakis, E. A.
Software Engineering
The JavaScript language did not specify, until ECMAScript 6 (ES6), native features for streamlining encapsulation and modularity. Developer community filled the gap with a proliferation of design patterns and module formats, with impact on code reusability, portability and complexity of build configurations. This work studies the automated refactoring of legacy ES5 code to ES6 modules with fine-grained reuse of module contents through the named import/export language constructs. The focus is on reducing the coupling of refactored modules through destructuring exported module objects to fine-grained module features and enhancing module dependencies by leveraging the ES6 syntax. We employ static analysis to construct a model of a JavaScript project, the Module Dependence Graph (MDG), that represents modules and their dependencies. On the basis of MDG we specify the refactoring procedure for module migration to ES6. A prototype implementation has been empirically evaluated on 19 open source projects. Results highlight the relevance of the refactoring with a developer intent for fine-grained reuse. The analysis of refactored code shows an increase in the number of reusable elements per project and reduction in the coupling of refactored modules. The soundness of the refactoring is empirically validated through code inspection and execution of projects' test suites.
title Automated Refactoring of Legacy JavaScript Code to ES6 Modules
topic Software Engineering
url https://arxiv.org/abs/2107.10164