TY - GEN
T1 - Refactoring Detection in C++ Programs with RefactoringMiner++
AU - Ritz, Benjamin
AU - Karakaš, Aleksandar
AU - Helic, Denis
N1 - Publisher Copyright:
© 2025 Copyright held by the owner/author(s).
PY - 2025/7/28
Y1 - 2025/7/28
N2 - Commits often involve refactorings-behavior-preserving code modifications aiming at software design improvements. Refactoring operations pose a challenge to code reviewers, as distinguishing them from behavior-altering changes is often not a trivial task. Accordingly, research on automated refactoring detection tools has flourished over the past two decades, however, the majority of suggested tools is limited to Java projects. In this work, we present RefactoringMiner++, a refactoring detection tool based on the current state of the art: RefactoringMiner 3. While the latter focuses exclusively on Java, our tool is-to the best of our knowledge-the first publicly available refactoring detection tool for C++ projects. Being based on a refactoring detector for Java projects, our tool lacks support for many refactorings specific to C++. The most common language-independent refactoring types, however, are supported and even several language incompatibilities were reconciled. RefactoringMiner’s thorough evaluation provides confidence in our tool’s performance. In addition, we test RefactoringMiner++ on a small seeded dataset and demonstrate the tool’s capability in a short demo involving both refactorings and behavior-altering changes. A screencast demonstrating our tool can be found at https://www.youtube.com/watch?v=tFTysQfGYSM.
AB - Commits often involve refactorings-behavior-preserving code modifications aiming at software design improvements. Refactoring operations pose a challenge to code reviewers, as distinguishing them from behavior-altering changes is often not a trivial task. Accordingly, research on automated refactoring detection tools has flourished over the past two decades, however, the majority of suggested tools is limited to Java projects. In this work, we present RefactoringMiner++, a refactoring detection tool based on the current state of the art: RefactoringMiner 3. While the latter focuses exclusively on Java, our tool is-to the best of our knowledge-the first publicly available refactoring detection tool for C++ projects. Being based on a refactoring detector for Java projects, our tool lacks support for many refactorings specific to C++. The most common language-independent refactoring types, however, are supported and even several language incompatibilities were reconciled. RefactoringMiner’s thorough evaluation provides confidence in our tool’s performance. In addition, we test RefactoringMiner++ on a small seeded dataset and demonstrate the tool’s capability in a short demo involving both refactorings and behavior-altering changes. A screencast demonstrating our tool can be found at https://www.youtube.com/watch?v=tFTysQfGYSM.
KW - C++
KW - Refactoring Detection
KW - RefactoringMiner
UR - https://www.scopus.com/pages/publications/105013966128
U2 - 10.1145/3696630.3728602
DO - 10.1145/3696630.3728602
M3 - Conference paper
AN - SCOPUS:105013966128
T3 - Proceedings of the ACM SIGSOFT Symposium on the Foundations of Software Engineering
SP - 1163
EP - 1167
BT - Proceedings of the ACM SIGSOFT Symposium on the Foundations of Software Engineering
A2 - Li, Jingyue
PB - Association for Computing Machinery (ACM)
T2 - 33rd ACM International Conference on the Foundations of Software Engineering, FSE Companion 2025
Y2 - 23 June 2025 through 27 June 2025
ER -