A Maven plugin that identifies and prioritizes God Classes, Highly Coupled classes, and Class Cycles in Java codebases for refactoring.
RefactorFirst is a Maven plugin that analyzes Java codebases to identify and prioritize refactoring targets such as God Classes, Highly Coupled classes, and Class Cycles. It helps developers tackle technical debt by providing visual reports and actionable insights based on graph algorithms and static analysis metrics.
Java developers and teams working on legacy or complex codebases who need to prioritize refactoring efforts to improve maintainability and reduce technical debt.
It combines academic research with practical tooling to offer prioritized refactoring recommendations, interactive visualizations, and seamless integration into Maven builds, making it easier to justify and plan technical debt reduction.
Identifies and prioritizes God Classes Highly Coupled classes, and Class Cycles in Java codebases you should refactor first.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses cutting-edge Directed Feedback Vertex Set and Directed Feedback Arc Set algorithms from academic research to optimally identify and break class cycles, providing actionable removal priorities.
Ranks refactoring targets like God Classes by impact and effort based on metrics from PMD and change proneness, helping teams decide where to start, as shown in the interactive report.
Integrates as a Maven plugin for HTML reports, site reports, and GitHub Actions job summaries, making it easy to embed into existing CI/CD pipelines without extra setup.
Generates 3D force graphs and DOT diagrams to visualize class relationships and cycles, though it simplifies for large codebases (over 4000 classes) to maintain performance.
Primarily designed for Maven; Gradle support is only a future plan, and non-Maven projects require cumbersome workarounds like dummy POM files, limiting flexibility.
Cycle analysis algorithms can push CPUs to their limits for large codebases, and the tool may slow down or default to simplified views for over 4000 classes, affecting usability.
Configuration is minimal with fixed defaults (e.g., analyzing only the 10 largest cycles), and features like detailed metrics or custom thresholds are not fully customizable.
Admitted as a passion project with limitations due to time, leading to slower updates, potential bugs, and missing features like unit test coverage integration mentioned in future plans.