SEApr 5, 2017

RefDiff: Detecting Refactorings in Version Histories

arXiv:1704.01544v1146 citations
Originality Incremental advance
AI Analysis

This addresses the need for software engineers to understand software evolution and adapt components, though it is incremental as it builds on existing refactoring detection methods.

The paper tackles the problem of automatically detecting refactoring operations in code changes between revisions in git repositories, presenting RefDiff, which achieved 100% precision and 88% recall in an evaluation with 448 known refactorings across seven Java projects.

Refactoring is a well-known technique that is widely adopted by software engineers to improve the design and enable the evolution of a system. Knowing which refactoring operations were applied in a code change is a valuable information to understand software evolution, adapt software components, merge code changes, and other applications. In this paper, we present RefDiff, an automated approach that identifies refactorings performed between two code revisions in a git repository. RefDiff employs a combination of heuristics based on static analysis and code similarity to detect 13 well-known refactoring types. In an evaluation using an oracle of 448 known refactoring operations, distributed across seven Java projects, our approach achieved precision of 100% and recall of 88%. Moreover, our evaluation suggests that RefDiff has superior precision and recall than existing state-of-the-art approaches.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes