willemsrb / sonar-packageanalyzer-plugin

Package analyzer plugin for SonarQube

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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)

About

Package analyzer plugin for SonarQube

License:Apache License 2.0


Languages

Language:Java 100.0%