我想从cobertura迁移到jacoco codecoverage工具。 我正在使用maven作为构建工具,我在我的pom.xml文件中添加了jococo-maven-plugin。它的配置如下所示:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.2.201409121644</version>
<configuration>
<append>true</append>
<outputEncoding>UTF-8</outputEncoding>
<destFile>${sonar.jacoco.reportPath}</destFile>
<dataFile>${sonar.jacoco.reportPath}</dataFile>
<outputDirectory>${jacoco.output.path}</outputDirectory>
<excludes>
<exclude>com/acmecorp/acmeproject/mbean/**/*.class</exclude>
<exclude>com/acmecorp/acmeproject/model/**/*.class</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
因此,在执行mvn clean install
之后,jacoco会为我生成一些代码覆盖率相当高的html页面。这份文件看起来就像我希望它看起来一样。
我需要执行的第二步是将jococo与声纳集成。以前我将声纳与cobertura集成。因此,我只是删除了cobertura特定属性并添加了与jococo相关的属性。
<properties>
<!--<sonar.cobertura.reportPath>target/site/cobertura/coverage.xml</sonar.cobertura.reportPath>-->
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.projectKey>${project.artifactId}</sonar.projectKey>
<sonar.projectName>ACME Project</sonar.projectName>
<sonar.projectVersion>${project.version}</sonar.projectVersion>
<sonar.java.source>${java.compliance.level}</sonar.java.source>
<sonar.sources>src/main/java</sonar.sources>
<sonar.jdbc.url>jdbc:mysql://4.4.8.8:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>ranos</sonar.jdbc.username>
<sonar.jdbc.password>ranos</sonar.jdbc.password>
<sonar.host.url>http://4.4.8.8:9000/sonar/</sonar.host.url>
<sonar.jacoco.reportPath>target/sites/jacoco/jacoco.exec</sonar.jacoco.reportPath>
<jacoco.output.path>target/sites/jacoco/</jacoco.output.path>
</properties>
Maven插件
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.0.1</version>
</plugin>
和个人资料
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
因此,我在服务器上获得了这样的代码覆盖率:
我看到在服务器上生成的覆盖率报告中,我看到我的排除包已包含在报告中。当我使用cobertura时,一切正常。
所以可能有人可以帮助我。我不想为声纳配置添加排除项。我真的希望它可以是jococo插件的一些额外配置。
更新
如果我使用cobertura maven-plugin和声纳
(我的意思是,如果我对此行<sonar.jacoco.reportPath>target/sites/jacoco/jacoco.exec</sonar.jacoco.reportPath>
发表评论并取消评论此行<sonar.cobertura.reportPath>target/site/cobertura/coverage.xml</sonar.cobertura.reportPath>
)
答案 0 :(得分:0)
排除不需要在JaCoCo方面,而是在SonarQube方面,并通过SonarQube UI指定,而不是在POM中指定。
文档会为您提供详细信息:http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-IgnoreCodeCoverage
答案 1 :(得分:0)
将要排除的软件包放在<properties>
的maven pom.xml
块中:
<properties>
<sonar.jacoco.excludes>*model*,*generated*,*exception*</sonar.jacoco.excludes>
</properties>
如果这不起作用,请尝试将属性名称更改为sonar.coverage.exclusions
,我认为它在更高版本中已更改。