A library that detects refactorings and generates AST diffs for Java, Python, and Kotlin code changes.
RefactoringMiner is a library and API that detects refactoring operations in code changes across Java, Python, and Kotlin projects. It analyzes Git history to identify structural modifications like method extraction, class renaming, and API migrations, and generates AST diffs for detailed change visualization. The tool helps developers understand code evolution, improve reviews, and support research on refactoring practices.
Software engineers, researchers, and tool builders who need to analyze refactoring patterns, automate code review processes, or study software evolution in multi-language codebases.
It offers high-precision detection of over 100 refactoring types, multi-language support, and rich AST diff visualization, making it a comprehensive solution for understanding structural code changes beyond traditional diff tools.
RefactoringMiner is a Java library and API designed to automatically identify refactoring operations within code changes across multiple programming languages. It analyzes commits, pull requests, and commit ranges to detect over 100 refactoring types, from simple renames to complex structural changes. The tool also generates detailed Abstract Syntax Tree (AST) diffs, providing a deeper understanding of code evolution beyond traditional line-based diffs.
RefactoringMiner aims to make code evolution transparent and understandable by precisely tracking structural changes, helping developers and researchers analyze refactoring practices and improve code review processes.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Identifies over 100 refactoring types, from Fowler's classics to API changes and migrations, as detailed in the supported types list, providing extensive coverage for analysis.
Generates syntax-aware diffs for Java, Python, and Kotlin, with features like refactoring-aware tooltips and single-page views, enhancing code review beyond traditional diffs.
Includes a Chrome extension for browser-based diff visualization and embedded GitHub comments, making refactoring analysis accessible during code reviews.
Available as a Maven dependency, Docker image, and command-line tool, supporting integration into various workflows from research to CI/CD pipelines.
TypeScript support is still on the roadmap and not implemented, while Kotlin precision/recall validation is pending, limiting utility for some modern stacks.
As a Java library, it requires JVM installation, adding overhead and complexity in environments optimized for other languages or lightweight tools.
Analyzing large commit histories or complex codebases can be resource-intensive, as implied by the need for benchmarks and validation studies.