Skip to content

willemsrb/sonar-packageanalyzer-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Package analyzer plugin for SonarQube Build Status Quality Gate

Requires SonarQube 6.3

This plugin analyzes and checks the package structure of your modules.

Rules

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

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

Metrics are added to the 'Complexity' measures.

  • Package cycles
    Number of elementary package cycles.

Languages

  • Java
    Java is supported through the SonarQube Java Parser (and the SonarQube SSLR)

Releases

No releases published

Packages

No packages published

Languages