当前位置: 首页 > 知识库问答 >
问题:

SonarQube报告中未显示的相关模块的聚合覆盖率或覆盖率由Jacoco生成

潘银龙
2023-03-14

我运行的Jacoco插件生成html,xml和jacoco.exec报告,以衡量我的testNg测试测试的代码覆盖率。

我在本地以及在Jenkins中成功地生成了这些报告,我的所有单元测试结果都反映在Sonar中,它向我展示了覆盖范围。

我的jacoco.exec既有模块中覆盖范围的结果,也有依赖模块的结果。我已经验证了这使用eclemma插件eclipse

我没有得到声纳中相关模块的覆盖结果。任何人都知道我做错了什么。

我的插件是这样的

<plugin>
 <groupId>org.jacoco</groupId>
 <artifactId>jacoco-maven-plugin</artifactId>
 <version>0.7.7.201606060606</version>
 <executions>
    <execution>
        <goals>
            <goal>prepare-agent</goal>
        </goals>
    </execution>
    <execution>
        <id>report</id>
        <phase>prepare-package</phase>
        <goals>
            <goal>report</goal>
        </goals>
    </execution>
  </executions>
</plugin>

我的目标是jacoco:report aggregate

共有1个答案

蒋奇
2023-03-14

我从jacoco多模块插件覆盖率中得到了答案

以下是我造成问题的错误。在我们的房子里

 <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>

在插件中

 <destFile>${sonar.jacoco.reportPath}</destFile>

对我来说,上面的陈述让jacoco大吃一惊。由于maven模块层次结构的不同,exec在不同的文件夹中执行,因此它们从未重新获得。

第二点是,仅当依赖模块是测试模块的编译时依赖项时,才会获得依赖模块覆盖率。

 类似资料:
  • Jacoco插件在jenkins报告中显示0%的覆盖率,但当我在本地系统中运行相同的命令时,Jacoco会正确生成报告。我正在使用以下命令: mvn-s xyz/settings.xml-f xyz/xyz/pom.xml清洁安装org.jacoco 所以当我在jenkins中运行这个命令时,它会生成错误的报告。我已经检查了它在工作区目录对应的项目在詹金斯。它显示每个项目的0%覆盖率。但是当我在本

  • 我尝试在我的应用程序模块中的代码的AndroidKotlin应用程序的声纳Qube中显示测试覆盖范围。我可以生成雅各的覆盖结果并显示声纳Qube分度仪,但问题是测试覆盖范围未显示在声纳Qube中: https://imgur.com/a/xOjxLl1 在我的项目的build.gradle中,我有: 在我的身体里。我的应用程序模块的gradle 我生成我的Jacoco报告: 并使用:生成我的son

  • 问题内容: 从不同的代码库执行业务测试时,我必须获得应用程序的代码覆盖率。 我使用:Maven作为我的构建Jbehave作为我的测试框架。测试是用Java编写的。 我的应用程序是部署在tomcat上的一组war文件。 应用程序代码库与测试代码库是分开的。 为了获得覆盖范围,我遵循以下步骤。 1使用maven编译测试代码。 2将应用程序类从其构建位置($ {app.code.dir} / targe

  • SonarQube不再显示我用jacoco分析的项目的测试覆盖率。似乎SonarQube有了更新(我发现新规则的日期是5月19日)。我还假设,从那时起,不再评估使用jacoco maven插件收集的测试覆盖率。我见过类似问题的老问题,但那是4年前的事了:JaCoCo SonarQube不兼容版本1007 我将POM更新到最新的插件版本0.8.4,但无济于事。有什么想法吗?我需要在哪里更改一些东西,

  • 我有一个很大的多模块Maven项目。Jacoco正在处理每个模块中的单元测试。我有一个单独的子模块来执行“合并”和“报告聚合”,这似乎是在生成数据。我甚至在SonarQube中使用生成的数据。我的大多数测试都使用PowerMock,我使用的是离线插装。 然而,在仔细查看覆盖率数据之后,我发现它遗漏了测试期间正在执行的类和方法的覆盖率数据。我在每个模块中看到的模式是,它只报告每个模块中单个类的覆盖率