我有一个多模块的Gradle构建,编译Scala代码。我想扫描代码,收集代码覆盖率,并将结果输入Sonarqube。
我的“你好,世界!”对于这个问题,定位为这里。
我正在运行以下命令:
$ ./gradlew clean build reportScoverage aggregateScoverage
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :a:compileScala
Pruning sources from previous analysis, due to incompatible CompileSetup.
> Task :a:compileTestScala
Pruning sources from previous analysis, due to incompatible CompileSetup.
> Task :b:compileScala
Pruning sources from previous analysis, due to incompatible CompileSetup.
> Task :b:compileTestScala
Pruning sources from previous analysis, due to incompatible CompileSetup.
> Task :a:compileScoverageScala
Pruning sources from previous analysis, due to incompatible CompileSetup.
> Task :a:reportScoverage
[scoverage] Generating scoverage reports...
[scoverage] Written Cobertura XML report to /java/opensource/gradle/gradle-scoverage-multi-module/a/build/reports/scoverage/cobertura.xml
[scoverage] Written XML report to /java/opensource/gradle/gradle-scoverage-multi-module/a/build/reports/scoverage/scoverage.xml
[scoverage] Written HTML report to /java/opensource/gradle/gradle-scoverage-multi-module/a/build/reports/scoverage/index.html
[scoverage] Coverage reports completed
> Task :b:compileScoverageScala
Pruning sources from previous analysis, due to incompatible CompileSetup.
> Task :b:reportScoverage
[scoverage] Generating scoverage reports...
[scoverage] Written Cobertura XML report to /java/opensource/gradle/gradle-scoverage-multi-module/b/build/reports/scoverage/cobertura.xml
[scoverage] Written XML report to /java/opensource/gradle/gradle-scoverage-multi-module/b/build/reports/scoverage/scoverage.xml
[scoverage] Written HTML report to /java/opensource/gradle/gradle-scoverage-multi-module/b/build/reports/scoverage/index.html
[scoverage] Coverage reports completed
> Task :aggregateScoverage
[info] Found 2 subproject report files [/java/opensource/gradle/gradle-scoverage-multi-module/a/build/reports/scoverage/scoverage.xml,/java/opensource/gradle/gradle-scoverage-multi-module/b/build/reports/scoverage/scoverage.xml]
[scoverage] Generating scoverage reports...
[scoverage] Written Cobertura XML report to /java/opensource/gradle/gradle-scoverage-multi-module/build/scoverage-aggregate/cobertura.xml
[scoverage] Written XML report to /java/opensource/gradle/gradle-scoverage-multi-module/build/scoverage-aggregate/scoverage.xml
[scoverage] Written HTML report to /java/opensource/gradle/gradle-scoverage-multi-module/build/scoverage-aggregate/index.html
[scoverage] Coverage reports completed
BUILD SUCCESSFUL in 13s
21 actionable tasks: 21 executed当我打开/java/opensource/gradle/gradle-scoverage-multi-module/build/scoverage-aggregate/index.html时,我可以看到:

里面有明显的代码覆盖号。
因此,我运行sonar-scanner以便将信息发送给Sonarqube:
$ sonar-scanner -Dsonar.projectName=multi-module \
-Dsonar.projectKey=multi-module \
-Dsonar.projectVersion=1.0-SNAPSHOT \
-Dsonar.sources=src/main/scala \
-Dsonar.modules=a,b \
-Dsonar.sourceEncoding=UTF-8 \
-Dsonar.scala.version=2.11 \
-Dsonar.scala.scoverage.reportPath=build/scoverage-aggregate/scoverage.xml \
-Dsonar.host.url=http://localhost:80/在上面的示例中,我是针对来自https://github.com/mwz/sonar-scala-docker的默认Docker映像运行它的,但我也尝试过在Sonarqube 6.7.6的本地安装中使用sonar-scala_2.12-6.7.0-assembly.jar和Sonar 7.4与sonar-scala_2.12-7.3.1-assembly.jar。
在下面的图片中,没有代码覆盖号(在上面提到的Sonarqubes的任何一个版本中)。

不过,我有有效的报告代码问题(正如预期的那样)。
我做错了什么,为什么没有代码覆盖号?这只支持SBT吗?我不是在召唤正确的目标吗?我缺少参数了吗?
正如您可以在声呐-scala的Sonarqube实例中看到的那样,显然有一个“覆盖率”部分显示了一些值(我没有得到):

谁能帮我弄清楚这件事吗?很长一段时间以来,我一直在努力把这件事做好。如果它是一个bug,或者是未完成的特性,那么找到它也是有帮助的。如果它只在SBT中得到支持,那么很高兴知道。
不管怎样,我真的很感激你的帮助!谢谢!
https://stackoverflow.com/questions/54848573
复制相似问题