arrow
Return

Characterizing refactoring graphs in Java and JavaScript projects

delete2021-09-18
delete4
PRE
AI
A
Aline Brito *
A
André Hora
M
Marco Túlio Valente
DOI:10.1007/s10664-021-10023-3delete
deleteOriginal
deleteOriginal request for help
deleteShare
deleteSave
Abstract

Abstract

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.
Keywords:
Refactoring
Refactoring graphs
Mining software repositories
Software evolution

Journal

Empirical Software Engineering cover
Empirical Software Engineering
IF:
3.6
Papers:
2.0K
Citations:
5.3K

Organization

U
Universidade Federal de Minas Gerais
Scholars:
2.5W
Papers: 1.5W
Citations: 1.4W
Cited Papers

Cited Papers

Evaluation of testicular germ cell tumor proliferation using DNA flow cytometry and nucleolar organizer silver staining
err2005-06-23
err0
errOAAI
errSoichiro Hasegawa; Kikuo Okamura; Toshio Shimoji; Koji Miyake; Yoshinori Yamakawa; Hirofumi Sakamoto
errShare
errSave
JMove: A novel heuristic and tool to detect move method refactoring opportunities
err2018-04-01
err47
PREAI
errTerra, Ricardo; Valente, Marco Tulio; Miranda, Sergio; Sales, Vitor
errShare
errSave
errShare
errSave
Hemofiltration in ex vivo lung perfusion—a study in experimentally induced pulmonary edema
err2016-02-01
err0
errOAAI
errTobias Nilsson; Christoffer Hansson; Andreas Wallinder; Carl-Johan Malm; Martin Silverborn; Sven-Erik Ricksten; Göran Dellgren
errShare
errSave
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bug-Introducing Changes
err2017-07-01
err139
PREAI
errda Costa, Daniel Alencar; McIntosh, Shane; Shang, Weiyi; Kulesza, Uira; Coelho, Roberta; Hassan, Ahmed E.
errShare
errSave
errShare
errSave
Inferring Functional Linkages between Proteins from Evolutionary Scenarios
err2006-06-01
err0
PREAI
errYun Zhou; Rui Wang; Li Li; Xuefeng Xia; Zhirong Sun
errShare
errSave
researcher View more