DesigniteJava is a code quality assessment tool for code written in Java.
It detects numerous design and implementation smells that show maintainability issues present in the
analyzed code. It also computes many commonly used object-oriented metrics. It helps you reduce
technical debt and improve maintainability of your software.
DesigniteJava community edition is free and open-source.
Free Download - DesigniteJava (Community)
Visit GitHub repository of DesigniteJava
Features
DesigniteJava detects 17 design smells violating one of the
object-oriented
design principles.
DesigniteJava detects 10 implementation smells to keep your software
readable
and less complex.
DesigniteJava computes object-oriented design metrics that are helpful to
gauge the structural health of a software.
Imperative Abstraction
Multifaceted Abstraction
Unnecessary Abstraction
Unutilized Abstraction
Deficient Encapsulation
Unexploited Encapsulation
Broken Modularization
Cyclic-Dependent Modularization
Insufficient Modularization
Hub-like Modularization
Broken Hierarchy
Cyclic Hierarchy
Deep Hierarchy
Missing Hierarchy
Multipath Hierarchy
Rebellious Hierarchy
Wide Hierarchy
Abstract Function Call From Constructor
Complex Conditional
Complex Method
Empty catch clause
Long Identifier
Long Method
Long Parameter List
Long Statement
Magic Number
Missing default
LOC (Lines Of Code – at method and class granularity)
CC (Cyclomatic Complexity – Method)
PC (Parameter Count – Method)
NOF (Number of Fields – Class)
NOPF (Number of Public Fields – Class)
NOM (Number of Methods – Class)
NOPM (Number of Public Methods – Class)
WMC (Weighted Methods per Class – Class)
NC (Number of Children – Class)
DIT (Depth of Inheritance Tree – Class)
LCOM (Lack of Cohesion in Methods – Class)
FANIN (Fan-in – Class)
FANOUT (Fan-out – Class)
Usage
Download the DesigniteJava.jar and analyze a Java project using the following syntax.
java -jar DesigniteJava.jar -i <path of the input source folder> -o <path of the output folder>
It requires Java 8 or above to work.
DesigniteJava console
OO Metrics computed by DesigniteJava
Contribute
The associated open-source project can be found on Github . Feel free to clone/fork/contribute
to the project.
Cite
If you use DesigniteJava in your research work, cite it using the following bibtex.
@misc{Sharma2018c,
author = {Sharma, Tushar},
title = {DesigniteJava},
month = dec,
year = 2018,
note = {https://github.com/tushartushar/DesigniteJava},
doi = {10.5281/zenodo.2566861},
url = {https://doi.org/10.5281/zenodo.2566861}
}
Credits
Apart from me , following people generously contributed efforts
to this project.
Antonis Gkortzis
Theodore Stassinopoulos
Alexandra Chaniotakis