返回
Characterizing refactoring graphs in Java and JavaScript projects
DOI:10.1007/s10664-021-10023-3.png)
摘要
En 中文
Refactoring is an essential activity during software evolution. Frequently, practitioners rely on such transformations to improve source code maintainability and quality. As a consequence, this process may produce new source code entities or change the structure of existing ones. Sometimes, the transformations are atomic, i.e., performed in a single commit. In other cases, they generate sequences of modifications performed over time. To study and reason about refactorings over time, we rely on refactoring graphs. Using this abstraction, we provide quantitative and qualitative investigation on 20 popular open-source Java and JavaScript-based projects. After eliminating trivial graphs, we characterize a large sample of 1,525 refactoring graphs, providing quantitative data on their size, commits, age, refactoring composition, ownership, operations over time, and refactoring graph patterns. Besides, we contact the authors of subgraphs describing large refactoring operations to understand the reasons behind their operations. We conclude by discussing applications and implications of refactoring graphs, for example, to improve code comprehension, detect refactoring patterns, and support software evolution studies.
Keyword:
Refactoring
Refactoring graphs
Mining software repositories
Software evolution
期刊
IF:
3.6
论文数:
2.0K
被引数:
5.3K
机构
引用论文
Evaluation of testicular germ cell tumor proliferation using DNA flow cytometry and nucleolar organizer silver staining
Cytometry
IF0
JMove: A novel heuristic and tool to detect move method refactoring opportunitiesJMove: 一种检测移动方法重构机会的新型启发式方法和工具
Clear cell adenocarcinoma of the female urethra: Clinical and ultrastructural study suggesting a unique neoplasm
Cancer
IF0

