Jacoco Report Aggregate Coverage Report issue on Sonar

问题描述

我有一个多模块的 maven 项目。我在为 jacoco 报告聚合覆盖率生成声纳报告时遇到问题。

我有 2 个模块(A 和 B)要为其生成报告。 我在父模块下创建了另一个模块(jacoco-report-aggr),用于生成 jacoco 的报告聚合。

当我运行“mvn clean install”时,jacoco-report-aggr 模块中生成的 jacoco index.html 文件显示了模块 A 和模块 B 的覆盖范围。但是当我运行“mvn sonar:sonar”时,声纳报告生成显示 只覆盖模块 B 而不是模块 A。 附上xml文件的对应部分。

我有如下的父 pom.xml。

<sonar.java.coveragePlugin>jacoco-maven-plugin</sonar.java.coveragePlugin>
        <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
        <sonar.language>java</sonar.language>
        <jacoco.version>0.8.5</jacoco.version>
        <surefire.plugin.version>2.19.1</surefire.plugin.version>
        <aggregate.report.dir>jacoco-report-aggr/target/site/jacoco-aggregate/jacoco.xml</aggregate.report.dir>
        <sonar.coverage.jacoco.xmlReportPaths>/jacoco-report-aggr/target/site/jacoco/jacoco.xml,/jacoco-report-aggr/target/site/jacoco-aggregate/jacoco.xml,${basedir}/../${aggregate.report.dir},${basedir}/../../${aggregate.report.dir},${basedir}/../../${aggregate.report.dir}</sonar.coverage.jacoco.xmlReportPaths>




            <!--Jacoco Code Coverage Plugin. Only start the agent-->
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${jacoco.version}</version>
                <executions>
                    <execution>
                        <id>pre-unit-test</id>
                        <goals>
                            <goal>prepare-agent</goal>
                            <goal>report</goal>
                        </goals>
                        <configuration>
                            <propertyName>jacoco.agent.argLine</propertyName>
                            <destFile>target/jacoco.exec</destFile>
                        </configuration>
                    </execution>
                    <execution>
                        <id>prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
                <!--Maven Surefire Plugin-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${surefire.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>3.7.0.1746</version>
                </plugin>

子模块 pom 看起来像这样。

 <properties>
<sonar.coverage.jacoco.xmlReportPaths>${basedir}/../${aggregate.report.dir}</sonar.coverage.jacoco.xmlReportPaths>
</properties>

jacoco-report-aggr 模块的 pom.xml 文件是这样的

<dependencies>
      <dependency>"Module A"</dependency>
      <dependency>"Module B"</dependency>
</dependencies>

  <properties>
    <sonar.coverage.jacoco.xmlReportPaths>${basedir}/../${aggregate.report.dir} 
    </sonar.coverage.jacoco.xmlReportPaths>
  </properties>


  <build>
    <plugins>
      <!--Maven Surefire Plugin-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.plugin.version}</version>
      </plugin>
      <!--Jacoco Aggregate Report plugin over dependencies-->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <executions>
          <execution>
            <id>report-aggregate</id>
            <phase>verify</phase>
            <goals>
              <goal>report-aggregate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)