我有一个独立的Jenkins作业在我们的代码库上运行Sonar,它工作正常,但我始终将代码覆盖率设为零,尽管后处理作业正确显示了Jenkins中的代码覆盖率。我认为问题在于Sonar没有正确地获取exec文件,因为我在Jenkins日志中收到了这个:
INFO: Analysing D:\Data\CCS\Jenkins\jobs\Sonar Scan\workspace\ccs-core\target\jacoco.exec
INFO: Analysing D:\Data\CCS\Jenkins\jobs\Sonar Scan\workspace\ccs-core-common\target\jacoco.exec
INFO: Analysing D:\Data\CCS\Jenkins\jobs\Sonar Scan\workspace\ccs-core-client\target\jacoco.exec
INFO: No JaCoCo analysis of project coverage can be done since there is no class files.
尽管在作业完成后我可以看到文件位于该位置。
我在构建中有两个步骤,第一步是通过mvn运行Jacoco:
clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true
第二个只使用Sonar插件生成报告。然后是在詹金斯生成Jacoco报告的后处理报告。
一些有用的灵魂能否指出我可能缺少的东西?
答案 0 :(得分:0)
试试这个:
在pom.xml中
<properties>
<jacoco.data.file>${project.build.directory}/coverage-reports/jacoco.exec</jacoco.data.file>
...
</properties>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${jacoco.data.file}</destFile>
<propertyName>surefireArgLine</propertyName>
</configuration>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${jacoco.data.file}</dataFile>
<outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory>
</configuration>
</execution>
...
...
在sonar-projet.properties
sonar.jacoco.reportPath=coverage-reports/jacoco.exec