Characterizing refactoring graphs in Java and JavaScript projects

被引:0
作者
Aline Brito
Andre Hora
Marco Tulio Valente
机构
[1] Federal University of Minas Gerais (UFMG),Department of Computer Science (DCC)
来源
Empirical Software Engineering | 2021年 / 26卷
关键词
Refactoring; Refactoring graphs; Mining software repositories; Software evolution;
D O I
暂无
中图分类号
学科分类号
摘要
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.
引用
收藏
相关论文
共 59 条
[1]  
AlOmar EA(2021)Toward the automatic classification of self-affirmed refactoring J Syst Soft (JSS) 171 110821-14
[2]  
Mkaouer M(2015)An experimental investigation on the innate relationship between quality and refactoring J Syst Softw 107 1-129
[3]  
Ouni A(2018)What’s in a GitHub star? Understanding repository starring practices in a social coding platform J Syst Softw 146 112-657
[4]  
Bavota G(2017)A framework for evaluating the results of the SZZ approach for identifying bug-introducing changes Trans Soft Eng 43 641-393
[5]  
Lucia AD(2015)Visually characterizing source code changes Sci Comput Program 98 376-1833
[6]  
Penta MD(2020)Characteristics of method extractions in Java: A large scale empirical study Empir Softw Eng 25 1798-1263
[7]  
Oliveto R(2013)OBEY: Optimal batched refactoring plan execution for class responsibility redistribution Trans Soft Eng 39 1245-649
[8]  
Palomba F(2014)An empirical study of refactoring challenge and benefits at Microsoft Trans Soft Eng 40 633-85:31
[9]  
Borges H(2017)Understanding the use of lambda expressions in Java Program Lang 1 85:1-32
[10]  
Valente MT(2020)Why developers refactor source code: A mining-based study ACM Trans Softw Eng Methodol 37 1-170:28