Classycle‘s Analyser analyses the static class and package dependencies in Java applications or libraries. It is especially helpful for finding cyclic dependencies between classes or packages. Classycle is similar to JDepend which does also a dependency analysis but only on the package level.
Classycle’s Dependency Checker searchs for unwanted class dependencies described in a dependency definition file. Dependency checking helps to monitor whether certain architectural constrains (e.g. in a layered architecture) are fulfilled or not.
Static cyclic dependencies of classes or packages can be a sign of bad object-oriented design. A static dependency is a dependency between classes or packages. It can already be detected by the compiler. This has to be distinguished from dynamic dependency which is a dependency between objects. Figuring out static cyclic dependency is the main purpose of Classycle.
Classycle does not need the Java source files because it analyses the compiled class files. Since version 1.3 it also evaluates Java Generics signatures.
From the analysis of the class files directed graphs of class and package dependencies are calculated. These graphs are further analysed in order to detect cyclic dependencies.
Classycle’s Analyser produces a report (in XML) which contains
- the complete directed class/package graph
- all strong components of the class/package graph with more than one vertex (i.e. cycles of class/package dependencies)
Coqua measures 5 distinct Java code quality metrics, providing an overview and history for the management, and down-to-the-code, detailed views for the developer. Metrics can be defined per team. Ideal for mid- to large-sized and/or offshore projects.