Full documentation for SonarQube has moved to a new location: http://docs.sonarqube.org/display/SONAR

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

« Previous Version 48 Next »

NameJava Ecosystem
Latest version1.2 ( 13 March 2013 )
Requires SonarQubeTM version3.4 or higher ( check version compatibility )
LicenseGNU LGPL 3
Issue trackerhttp://jira.codehaus.org/browse/SONARJAVA

Live example


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

Description / Features

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

It is compatible with the SonarQubeTM Eclipse plugin to track issues while coding. It is also compatible with the Issues Report plugin to run pre-commit local analysis.


The Java Ecosystem is a set of plugins:

  • Java [sonar-java-plugin]: to parse Java code source, compute metrics, etc.
  • Squid [sonar-squid-java-plugin]: to compute additional metrics, check code against rules provided by the SonarQubeTM engine
  • Checkstyle [sonar-checkstyle-plugin]: to check code against rules provided by Checkstyle
  • FindBugs [sonar-findbugs-plugin]: to check code against rules provided by FindBugs
  • PMD [sonar-pmd-plugin]: to check code against rules provided by PMD
  • Surefire [sonar-surefire-plugin]: to execute unit tests with Surefire
  • Cobertura [sonar-cobertura-plugin]: to get code coverage with Cobertura
  • JaCoCo [sonar-jacoco-plugin]: to get code coverage with JaCoCo

Note that by default the Java Ecosystem is provided with SonarQubeTMYou can update it from the Update Center (since SonarQubeTM 3.5) or download the latest release from this page header.

Once the Java Ecosystem is installed, other plugins are available for download: Emma, Clover, etc.


Run a SonarQubeTM Analysis

To run an analysis of your Java project, it is recommended to use the following analyzers:

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


  • The source directory should be set to the directory containing the top parent package. For example, if your directory structure is 'src/main/java/com/mycompany/...', the source directory must be set to 'src/main/java'.
  • The source directory tree has to match the package declaration. For example, the following class:

must be located in the following directory: [mySourceDirectory]/com/mycompany/mypackage/MyClass.java. Otherwise you would get such an error while running your analysis:


Tests and Code Coverage

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

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

To deal with unit tests and code coverage, see Code Coverage by Unit Tests for Java Project tutorial.

To deal with integration tests and code coverage, see Code Coverage by Integration Tests for Java Project tutorial.

Advanced Settings

Documentation on advanced parameters is available on the Analysis Parameters page.

Advanced parameters specific to Java are:

KeyDescriptionDefault value


Compatibility of your source code regarding Java version.

This property is not used by the SonarQubeTM core but can be used by Java SonarQubeTM plugins like the PMD plugin. 



See Java Ecosystem FAQ.


See Metrics documentation page.


A sample project with code coverage computed with Emma is available on GitHub that can be browsed or downloaded: /projects/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


Version 1.3 (unreleased) (43 issues)

T Key Summary P Status
Bug SONARJAVA-165 "Undocumented API" detects private attributes as public Critical Closed
Bug SONARJAVA-29 "Avoid Throwing Raw Exception Types" Rule not able to detect "throw new Exception" in all cases Major Closed
Bug SONARJAVA-135 The rule "Unused private method" generates some false-positives in case of method overloading Major Closed
New Feature SONARJAVA-133 Compute the new metric "complexity in methods" Major Closed
New Feature SONARJAVA-128 Rule S00108: Nested blocks of code should not be left empty Major Closed
New Feature SONARJAVA-127 Rule S00107: Methods should not have too many parameters Major Closed
New Feature SONARJAVA-125 Rule S00112: Generic exceptions Error, RuntimeException, Throwable and Exception should never be thrown Major Closed
New Feature SONARJAVA-122 Rule S00105: Tabulation characters should not be used Major Closed
New Feature SONARJAVA-121 Rule S00104: Files should not have too many lines of code Major Closed
New Feature SONARJAVA-119 Rule S00101: Class names should comply with a naming convention Major Closed
New Feature SONARJAVA-118 Rule S00100: Method names should comply with a naming convention Major Closed
New Feature SONARJAVA-120 Rule S00103: Lines of code should not be too long Major Closed
Improvement SONARJAVA-166 Reorganize the properties of every Java plugin using sub-categories Major Closed
Bug SONARJAVA-164 The Sonar JaCoCo plugin takes into account only the first binary directories if several ones are provided Major Closed
Bug SONARJAVA-161 XPath rule should not lead to NPE, when parse error happens Major Closed
Improvement SONARJAVA-105 The cardinality of JaCoCo properties "includes", "excludes" and "exclclassloader" should be multiple Major Closed
Improvement SONARJAVA-154 Use the new Sonar API to highlight any symbol use or declaration in java source code Major Closed
Improvement SONARJAVA-153 Use the Sonar Syntax Highlighting API to colorize java source code Major Closed
New Feature SONARJAVA-152 Deprecate PMD rule AvoidDollarSigns in favor of S00114 - S00117 Major Closed
New Feature SONARJAVA-151 Rule S00122: Statements should be on separate lines Major Closed
Showing 20 out of 43 issues Refresh



Version 1.2 (16 issues)



Version 1.1 (15 issues)


  • No labels