A Java code quality assessment tool that detects design/implementation smells and computes object-oriented metrics.
DesigniteJava is a static code analysis tool specifically for Java that detects design and implementation smells while computing object-oriented metrics. It helps developers identify code quality issues, architectural flaws, and maintainability problems in Java projects. The tool provides automated assessment to support refactoring and technical debt reduction.
Java developers, software architects, and development teams who need to assess and improve code quality, maintainability, and design in Java codebases.
It offers comprehensive smell detection covering both design and implementation issues combined with standard object-oriented metrics in a single tool. The custom LCOM implementation provides more accurate cohesion analysis than traditional approaches.
Detects smells and computes metrics of Java code
Detects 17 design smells and 10 implementation smells, covering a wide range from architectural flaws like Cyclic Hierarchy to code-level issues like Magic Number, as detailed in the README.
Uses a custom LCOM implementation that avoids pitfalls of traditional methods, providing more reliable metrics for class cohesion, including handling edge cases with -1 values, as explained in the notes section.
Computes 13 standard metrics such as Cyclomatic Complexity and Depth of Inheritance Tree, offering quantitative data to support refactoring and maintainability improvements.
Combines smell detection with metrics to help developers prioritize issues, making it effective for reducing technical debt in Java codebases.
The tool deletes all existing files in the output folder, requiring users to ensure it's empty, which poses a risk of data loss and complicates repeated analyses.
Operates as a standalone command-line tool with no built-in support for IDE plugins, CI/CD pipelines, or modern build tools, making automated workflows cumbersome to set up.
Lacks a GUI or web-based dashboard, forcing reliance on command-line output and manual interpretation, which can be less accessible for team collaboration.
Python Framework to analyse Git repositories
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. ## Key Features - **Refactoring Detection** — Identifies 40+ classic refactorings from Fowler's catalog, 52 API-level changes, 8 migration patterns, and 5 test-specific refactorings. - **Multi-Language Support** — Works with Java, Python, and Kotlin codebases, with TypeScript support planned. - **AST Diff Generation** — Produces syntax-aware diffs at commit, pull request, and commit range levels. - **Visualization Tools** — Includes a Chrome extension for refactoring-aware commit reviews and interactive diff visualization in browsers. - **Advanced Diff Features** — Supports refactoring-aware tooltips, single-page views, embedded GitHub comments, and handling of code moved between files. ## Philosophy 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.
Send Sir Perceval on a quest to retrieve and gather data from software repositories.
A library for mining of path-based representations of code (and more)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.