Scoverage Plugin for Sonar
Scoverage measures how many statements of a given Scala program have been covered by automated tests. This new metric is much better for Scala than traditional line coverage and branch coverage because typically:
- There are many statements on a single line
ifstatements are used rarely
This plugin reads XML report generated by Scoverage and populates several metrics in Sonar:
- Total number of statements
- Number of statements covered by tests
- Statement coverage rate (%)
Projects with sub-projects are supported as well. Overall statement coverage is (sum of number of covered statements for all sub-projects) / (total number of statements for all sub-projects). In other words, it's more intelligent than just plain average of coverage rates for sub-projects.
Support for older versions of Sonar
Download and copy the plugin jar to the Sonar plugins directory (usually /extensions/plugins). Restart Sonar.
Configure Sonar runner
Set location of the scoverage.xml file in the sonar-project.properties located in your project's root directory:
... sonar.scoverage.reportPath=target/scala-2.11/scoverage-report/scoverage.xml ...
Run Scoverage and Sonar runner
If your project is based on SBT and you're using Scoverage plugin for SBT you can generate the Scoverage report by executing following from command line:
$ sbt clean coverage test
And then run Sonar runner to upload the report to the Sonar server:
Add statement coverage columns
To see the actual statement coverage percentage you need to log in to Sonar as admin. Click Components section on the left side, then click Customize ON in the top-right corner and then add Statement coverage column.
You can also add Statement coverage widget to your project's dashboard. Log in to Sonar as admin. Go to the project dashboard, click Configure widgets in the top-right corner, click Add widget button in the Custom Measures section. Click Edit in the newly added Custom Measures widget and choose Statement coverage for Metric 1. Click Save, Back to dashboard. Enjoy.
Take a look at a sample SBT multi-module project located in this repository in the
5.1.3 - 8 April 2016
- Fixed issue #31
5.1.2 - 25 October 2015
Michael Zinsmaier pull requests:
- Improved path handling, reported filenames are converted to src dir relative paths
- Adding directory coverage thus supporting the Treemap widget
- Added total statements metric to avoid overlaps with coremetrics
Justin Kaeser pull request:
5.1.1 - 7 May 2015
- Upgrade to SonarQube 5.1 API
1.1.0 - 23 Sep 2014
- Upgrade to SonarQube 4.2 API