Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current ·  View Page History
Live example

If you want to see a live example of the capabilities of the Java Ecosystem, you can have a look at Sonar on Sonar.

Description / Features

The Java Ecosystem is a set of Sonar plugins used to monitor the quality of Java projects within Sonar.

Installation

The Java Ecosystem is provided with Sonar.

As any other plugins, you can update it through the Update Center or download new version into the SONAR_HOME/extensions/plugins directory. Then restart the Sonar server.

Usage

Run a Sonar Analysis

To launch a Sonar analysis of your Java project, it is recommended to use:

Sample projects for each analyzer are available on GitHub that can be browsed or downloaded: /projects/languages/java

Unit Tests and Code Coverage Reports

The default code coverage engine for unit tests can be set in Settings > Configuration > General Settings > Java > Code coverage plugin property.

By default code coverage engine is JaCoCo but CoberturaEmma or Clover can also be used.

See also Code Coverage by Unit Tests tutorial.

JaCoCo

JaCoCo is an open source and robust Java code coverage tool, developed by the authors of EclEmma.

For more information, see: Comparison of Emma, Clover, Cobertura and JaCoCo.

Known limitations:

  • Some libraries complain on classes, which were instrumented by JaCoCo, so exclusions must be set:
    • Javassist (e.g. when Hibernate used) - "*_javassist_*"
    • Drools - "org.drools.*"
  • Exact number of line hits not available, because JaCoCo reports only status of line (no code, not covered, partly covered, fully covered) - see JaCoCo Coverage Counters.

Cobertura

The Sonar Cobertura plugin is based on the cobertura-maven-plugin and so can only be used to compute code coverage information on Maven projects.

This plugin has only one parameter to define the maximum amount of memory used by the java process in charge to extract all code coverage information from the Cobertura report:

In case the cobertura-maven-plugin is defined in the pom.xml of your project, Sonar will use the version defined in the pom and can potentially not function properly.

 

Android

 

Extending Coding Rules using XPath

New coding rules can be added using XPath. See the related documentation.

To navigate the AST, download the SSLR Java Toolkit.

Change Log

Release 1.1 (15 issues)
Type Key Summary Priority
Improvement SONARJAVA-18 Grab violations directly from findbugs without xml-report generation Major
Bug SONARJAVA-80 L10n files are not in the correct folder Major
Improvement SONARJAVA-20 Upgrade to SSLR 1.16 and switch to lexerless parser Major
Improvement SONARJAVA-3 The literal "42L" should be lexed as a LONG_LITERAL instead of a INTEGER_LITERAL Major
Improvement SONARJAVA-2 The literal "42.0" should be lexed as a DOUBLE_LITERAL instead of a FLOATING_LITERAL Major
Bug SONARJAVA-1 OutOfMemoryError when attempting to lex an unterminated single quote Major
Bug SONARJAVA-14 findbugs-result.xml contains invalid character entity Major
Improvement SONARJAVA-15 When using the property 'sonar.findbugs.excludesFilters' an INFO log should be generated to clearly show that the external Findbugs filter is taken into account Major
Improvement SONARJAVA-39 New property 'sonar.java.coveragePlugin' Major
Improvement SONARJAVA-4 Upgrade to Checkstyle 5.6 Major
New Feature SONARJAVA-5 Rule: Generic Java rule to define some homemade checks with an XPath expression Major
Improvement SONARJAVA-17 When the last line of a source code file is a blank line, this line is not counted in the "lines" measure Major
Bug SONARJAVA-44 The IT and Overall code coverage should not be computed when the code coverage by unit tests is not computed with jacoco Minor
Improvement SONARJAVA-22 The two properties of the Checkstyle rule 'RegexpHeaderCheck' should be TEXT Trivial
Bug SONARJAVA-84 Typo in the Checkstyle rule "ReturnCount" Trivial

Labels
  • None