Designite for Java


We are pleased to introduce DesigniteJava – a software design quality assessment tool for code written in Java.

It is free and open-source.

Download Designite for Java

Visit GitHub repository of DesigniteJava
Download Star Fork

Features

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)

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.

Sample report generated by DesigniteJava
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.

Credits

Apart from me, following people generously contributed efforts to this project.

  • Antonis Gkortzis
  • Theodore Stassinopoulos
  • Alexandra Chaniotakis