Scoverage Sensor not honouring property sonar.projectBaseDir
gheo21 opened this issue · 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 47126c4 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)
Hello @gheo21, by chance are you running the analysis from a Wiindows machine ?
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!
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.
Hello @mwz,
Thanks for getting back to me.
- It looks like the other plugins are not affected by this.
- 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!
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.