RefDiff: Detecting Refactorings in Version Histories
arXiv:1704.01544 · doi:10.1109/MSR.2017.14
Abstract
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.
Paper accepted at 14th International Conference on Mining Software Repositories (MSR), pages 1-11, 2017
References in corpus (1)
Cited by in corpus (17)
- Problems with SZZ and Features: An empirical study of the state of practice of defect prediction data collection
- Why and How Java Developers Break APIs
- A systematic literature review on the code smells datasets and validation mechanisms
- Do Design Metrics Capture Developers Perception of Quality? An Empirical Study on Self-Affirmed Refactoring Activities
- The Android Update Problem: An Empirical Study
- PR-SZZ: How pull requests can support the tracing of defects in software repositories
- Refactoring to Pythonic Idioms: A Hybrid Knowledge-Driven Approach Leveraging Large Language Models
- MSR Mining Challenge: The SmartSHARK Repository Mining Data
- Impact of Change Granularity in Refactoring Detection
- Understanding Code Change with Micro-Changes
- An extensive empirical study of inconsistent labels in multi-version-project defect data sets
- Extracting Concise Bug-Fixing Patches from Human-Written Patches in Version Control Systems
- An Empirical Study on the Impact of Change Granularity in Refactoring Detection
- RefSearch: A Search Engine for Refactoring
- RefactorHub: A Commit Annotator for Refactoring
- More Effective Software Repository Mining
- Learning and Suggesting Source Code Changes from Version History: A Systematic Review