sbt-sonar icon indicating copy to clipboard operation
sbt-sonar copied to clipboard

Scoverage Sensor not honouring property sonar.projectBaseDir

Open gheo21 opened this issue 7 years ago • 5 comments

Hello everybody,

I want to use sbt sonar for analyzing projects. However, the plugin is not able to pick up the scoverage information and display it in sonar for my sbt project. There is one caveat, I have a multi module build and all of my modules are in a subfolder called modules. (Please find attached sample project which is reproducing the error https://github.com/mwz/sbt-sonar/files/2335828/multi-module-new.zip)

I essentially changed the sample project from here https://github.com/mwz/sbt-sonar/commit/47126c442d1cdee40738a03361864d89f4b0ca8a and moved all the submodules in the submodule folder.

I'm running the sonnar scanner

sbt -Dsonar.host.url=http://localhost:80 -Dsonar.projectBaseDir=modules -Dsonar.sources=src/main/scala  -Dsonar.scoverage.reportPath=target/scala-2.12/scoverage-report/scoverage.xml  clean coverage test coverageReport sonarScan

Not producing any coverage information in sonar, just producing the warning:

WARN: [scoverage] The property: 'sonar.scoverage.reportPath' is deprecated, use the new property 'sonar.scala.scoverage.reportPath' instead.
[info] INFO: [scoverage] Loading the scoverage report file: 'modules/module1/target/scala-2.12/scoverage-report/scoverage.xml'.
[info] INFO: [scoverage] Successfully loaded the scoverage report file.
WARN: [scoverage] The file 'module1/src/main/scala/Example1.scala' has no scoverage information associated with it. 

Running it on the subproject does not make any difference:

sbt -Dsonar.host.url=http://localhost:80 -Dsonar.projectBaseDir=modules -Dsonar.sources=src/main/scala  -Dsonar.modules=module1 -Dsonar.scoverage.reportPath=target/scala-2.12/scoverage-report/scoverage.xml "project module1" clean coverage test coverageReport sonarScan

Note: Using the docker sonar image sonarqube:6.7.5-alpine via docker compose up. (from here https://github.com/mwz/sonar-scala-docker)

gheo21 avatar Aug 30 '18 10:08 gheo21

Hello @gheo21, by chance are you running the analysis from a Wiindows machine ?

BalmungSan avatar Aug 30 '18 14:08 BalmungSan

Hello,

@BalmungSan no, it 's a macOs. I've already checked the other items related to the test coverage not being shown, but I couldn't find a fix it.

Thanks!

gheo21 avatar Aug 30 '18 14:08 gheo21

Thanks for reporting this issue @gheo21. It is interesting and before I do any digging I was wondering if you had a chance to check the following:

  • does this only affect the Scoverage sensor or Scalastyle and/or Scapegoat too?
  • are you seeing the same behaviour when executing the analysis using the bare sonar-scanner?

Just as a sidenote, from my understanding of how the projectBaseDir property works, if you set it sonar will no longer run analysis on your aggregate project, but I can be wrong about this.

mwz avatar Sep 02 '18 23:09 mwz

Hello @mwz,

Thanks for getting back to me.

  1. It looks like the other plugins are not affected by this.
  2. It works if I execute the sonnar-scanner, though not using the projectBaseDir
unzip multi-module-new.zip
cd multi-module-new/modules
$SONAR_SCANNER_HOME/bin/sonar-scanner -Dsonar.modules=module1,module2 -Dsonar.host.url=http://localhost:80 -Dsonar.projectKey=module1 -Dmodule1.sonar.sources=src/main/scala -Dmodule2.sonar.sources=src/main/scala -Dsonar.scala.scoverage.reportPath=target/scala-2.12/scoverage-report/scoverage.xml

So as an intermediate solution I will go with option two, but I think this should work with the sonar scanner sbt plugin.

Best regards!

gheo21 avatar Sep 03 '18 14:09 gheo21

Ok, if other plugins are not affected by this, then it's probably got something to do with the way sonar-scala matches paths in the Scoverage reports. I'll have a look into this when I get a minute.

mwz avatar Sep 03 '18 14:09 mwz