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

Sonar maven jacoco代码覆盖多模块项目

哈雅珺
2023-03-14

我有一个多模块项目和一个家长pom。xml及其两个模块。项目jar和项目。战争所有测试用例都在项目中。罐子当我运行mvn声纳时。母舰pom上的声纳目标,jacoco。未生成exec,代码覆盖率为空。我在父pom中具有以下属性。

<properties>
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.jacoco.reportPath>${project.basedir}/target/jacoco.exec</sonar.jacoco.reportPath>
</properties>

请帮忙。我使用的是Sonarqube 4.2。

共有2个答案

邢寒
2023-03-14

对于那些有类似问题的人,我解决这个问题的方式略有不同(我从命令行运行它,而不是让Jenkins来做)。我对插件没有意见。

所有这些设置都在父POM中定义。我使用以下版本:

<plugin.jacoco.version>0.7.2.201409121644</plugin.jacoco.version>

报表路径略有不同,因此只创建一个jacoco.exec。默认情况下,如果文件已经存在,声纳将把结果追加在一起。

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

在pluginManagement部分,我有以下插件:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>${plugin.jacoco.version}</version>
  <configuration>
    <destFile>${sonar.jacoco.reportPath}</destFile>
  </configuration>
  <executions>
    <execution>
      <id>agent</id>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
  </executions>
</plugin>

然后在我的插件部分,我确保插件可用于整个项目:

  <plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
  </plugin>

正如benzonico所指出的,您需要在声纳分析它们之前运行测试,我的操作如下:

mvn clean test sonar:sonar

我不必对Surefire插件做任何更改(就像我过去不得不做的那样)。

董胡非
2023-03-14

使用java插件的2.4版,您必须在运行SonarQube分析之前生成覆盖率报告。你可以看到这一页https://github.com/SonarSource/sonar-jacoco关于如何做到这一点。

 类似资料:
  • 我有一个多模块项目,我似乎无法在Sonarqube上获得准确的单元测试代码覆盖率报告。我使用buildr和JaCoCo生成测试覆盖率。文件继承类似于下面。 项目--module1----reports----Jacoco------Jacoco.cov(jacoco执行文件,以前用作.exec)--module2--reports----Jacoco(生成的HTML、CSV和XML报表文件)---

  • 我有这样的项目结构: 模块应用程序 模块-登录 模块注册 问题:我有上面喜欢Android项目的结构,能够生成jaco代码覆盖率报告,并且可以用于声纳仪表板。我面临的espresso测试问题,它只显示模块应用程序的代码覆盖率,而不显示其他模块的代码覆盖率。Espresso测试正在运行用例流,如注册,然后从其他两个模块登录和调用类,但其他两个模块的覆盖率始终为0%。 < li >我想了解espres

  • 我有一个maven多模块项目。 所有测试都在称为tests/的单个模块中,所有代码都在单独的模块中。 有没有办法让我得到代码覆盖率?

  • 问题内容: 似乎有几个问题,这些问题已经很老了,并且从Java 8对Jacoco的支持开始发生了变化。 我的项目包含以下结构 我已经配置了这样的 主POM.xml Pom.xml B pom.xml 我正在执行此命令。我可以看到jacoco.exec正在生成,但是我看不到任何HTML报告正在验证数据。 请帮我解决一下这个。还有一点是,我的配置对项目是否正确? 更新资料 已确定的问题。 变成 现在,

  • 我有一个类似这样的项目结构: -应用 --模块 2 //库模块 --模块3 //库模块 我正在为我的多模块Android项目编写仪器测试用例,其中包含jaco代码覆盖范围。如果我从“app”模块执行检测测试用例,则仅为“app”模块类生成代码覆盖率。 因此,为了获得“模块2”的代码覆盖率 当我在非应用程序模块中执行插装测试用例,无法启动主活动,插装期间应用程序未启动,测试用例失败时,会出现问题。

  • 似乎有几个问题,这些问题很老了,而且从Java 8对Jacoco的支持开始就发生了变化。 我的项目包含以下结构 我已经这样配置了 主要聚甲醛.xml 一个Pom.xml B pom.xml 我正在执行这个命令< code>mvn clean package。我可以看到jacoco.exec正在生成,但是我看不到任何验证数据的HTML报告。 请帮帮我。另一点是,我的配置对于项目是否正确? 更新 已识