gpt4 book ai didi

maven - Sonar 上的多模块 Maven 项目代码覆盖率问题

转载 作者:行者123 更新时间:2023-12-03 17:06:52 25 4
gpt4 key购买 nike

我有一个与 JaCoCo 和 SONAR 的多模块 maven 项目相关的问题。

我有一个父模块和 3 个子模块。

父 |-child1 - pom.xml |-child2 - pom.xml |-child3 - pom.xml |-pom.xml

我在父 pom.xml 中包含 JaCoCo 插件。当我从父 pom.xml 运行 mvn clean install sonar:sonar build 时,我看到每个 child 都生成了自己的 jacoco.exec 文件。像这样的东西 child1/target/jacoco.exec, child2/target/jacoco.exec 等等。但是,在父级没有生成 jacoco.exec。

当我运行 Sonar 分析时,我看到单元测试覆盖率在 Sonar 仪表板上显示为 0.0%。

我的问题是
1.我应该怎么做才能看到整个项目的单元测试覆盖率?
2. 为了显示一个单元测试覆盖率,SONAR 是从父级还是从子级选择 jacoco.exec 文件?

请帮忙。这对我来说真的是一个障碍。感谢您的所有投入。

最佳答案

我遇到了同样的问题,然后我在每个模块 pom xml 中包含以下内容并且它有效:

<!-- Sonar START -->
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
<jacoco.version>0.7.9</jacoco.version>
<!-- Sonar START -->

插件:
<!-- SONAR config START -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<tasks>
<echo>Project Base Path (WEB):: ${project.basedir}</echo>
<echo>Jacoco exec target path (WEB):: ${sonar.jacoco.reportPath}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<argLine>${argLine}</argLine>
</configuration>
</plugin>
<!-- SONAR config END -->

并在 Jenkins 中将“目标和选项”配置为:
sonar:sonar

对于运行特定测试:
sonar:sonar -DfailIfNoTests=false -Dtest=<Test Class> test

关于maven - Sonar 上的多模块 Maven 项目代码覆盖率问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com