We are pleased to introduce DesigniteJava – a software design quality assessment tool for code written in Java.
It is free and open-source.
This console application detects numerous design and implementation smells. It also computes many commonly used object-oriented metrics.
Supported design smells
- 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
Supported implementation smells
- 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
Supported object-oriented metrics
- 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)
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.
The associated open-source project can be found on Github. Feel free to clone/fork/contribute to the project.
Apart from me, following people generously contributed efforts to this project.
- Antonis Gkortzis
- Theodore Stassinopoulos
- Alexandra Chaniotakis