【发布时间】:2014-04-06 03:19:23
【问题描述】:
我在获取 jacoco 分析报告时遇到了声纳问题。然而,Jenkins 能够获取报告并显示结果。 我的项目是由 Jenkins 构建的 Maven 构建。 jacoco 报告由 maven 生成(在 pom 中配置)。 Sonar 使用 Jenkins 插件执行。
这是我在 SonarQube 上看到的:
这是我在詹金斯看到的项目报告。
maven 插件配置:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.4.201312101107</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
Jenkins 声纳插件配置
【问题讨论】:
-
控制台输出中的某处应显示“代码覆盖率设置为 0%...”,该信息对调试您的问题很有用。有两件事不看就想到了:1.您应该设置 sonar.binaries 属性并将其指向您编译的类文件 2.您应该设置 sonar.tests 并将其指向未编译的测试文件。 3.你应该在调试模式下编译(你可能已经我看不出来了)
-
@Cole9350 所以我在输出中看到的错误是:项目覆盖率设置为 0%,因为没有包含类的目录。 我尝试将 sonar.binaries 设置为类目录的根目录 - /target/classes - 但这导致错误提示找不到它们
-
更正 我再次尝试设置类的完全限定路径,现在我可以看到代码覆盖率。但是我知道当 jacoco 传感器运行时会看到错误:没有关于每次测试覆盖率的信息。
-
好!你快到了。第一个错误表明您没有设置 sonar.binaries。现在你的错误是告诉你设置 sonar.tests 就像我在 (2) 中提到的那样......之后我很确定声纳会覆盖范围
-
@Cole9350 :将声纳从 4.0 升级到 4.5.1 后,我也面临同样的问题。之前它用于生成代码覆盖率,但升级后没有关于代码覆盖率的信息,当我通过控制台输出时,我看到目标文件夹下生成了 jacoco.exec 文件,但列出了 Cobertura 传感器而不是 jacocoSensor 用于分析代码覆盖率。
标签: maven jenkins sonarqube jacoco