Requires SonarQube 6.3
This plugin analyzes and checks the package structure of your modules.
Rules are based on the rules defined by the jDepend library.
Abstractness
The ratio of the number of abstract classes (and interfaces) in the analyzed package compared to the total number of classes in the analyze package. The range for this value is 0% to 100%, with A=0% indicating a completely concrete package and A=100% indicating a completely abstract package.
Afferent coupling
The number of other packages that depend upon classes within the package is an indicator of the package's responsibility.
Efferent coupling
The number of other packages that the classes in the package depend upon is an indicator of the package's independence.
Instability
The ratio of efferent coupling (Ce) to total coupling (Ce + Ca) such that I = Ce / (Ce + Ca). This value is an indicator of the package's resilience to change. The range for this value is 0 to 100%, with I=0% indicating a completely stable package and I=100% indicating a completely instable package.
Number of classes
The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.
Package cycles
All elementary package cycles are and reported on all particing packages, listing the classes participating in the package cycle. The elementary cycles detection is based on Donald B. Johnson's algorithm for finding all the elementary circuits of a directed graph.
Missing package-info.java (java language only)
Reports missing package-info.java files on all classes the in analyzed package.
Issues raised by rules can be registered on the following locations:
Package level only
Only registers an issue if a package level component exists (for example: package-info.java for Java projects).
Classes level only
Registers the issue on (relevant) classes in the package.
Package level, fallback to class level (default setting)
Register an issue on the package level if possible, else register the issue on classes.
When registering an issue on classes the following can be configured:
All classes (default setting)
Register the issue on all (relevant) classes in the package.
First class only
Register the issue on the first (relevant) class in the package.
Metrics are added to the 'Complexity' measures.