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

多个 MAVEN 模块声纳代码覆盖率在声纳 Qube 上显示为零 %

微生学
2023-03-14

我使用的声纳版本6.7.6和maven 3.3.9我有以下配置在我的Jenkins它生成的雅科报告和测试用例报告预期如下路径。但是我看到Sonarqube的代码覆盖率为0%,有人能帮我吗?

sonar.language=java
sonar.java.coveragePlugin=jacoco
sonar.junit.reportPaths=ABC-1/target/surefire-reports, ABC-2/target/surefire-reports, ABC-3/target/surefire-reports, ABC-4/target/surefire-reports, ABC-5/target/surefire-reports, ABC-6/target/surefire-reports
sonar.jacoco.reportPaths=ABC-1/target/jacoco.exec, ABC-2/target/jacoco.exe, ABC-3/target/jacoco.exec, ABC-4/target/jacoco.exec, ABC-5/target/surefire-reports, ABC-6/target/jacoco.exec
sonar.projectKey=abc_Parent
sonar.projectName=abc_Parent
sonar.projectVersion=${POM_VERSION}
sonar.java.binaries=ABC-1/target/classes, ABC-2/target/classes, ABC-3/target/classes, ABC-4/target/classes, ABC-5/target/classes, ABC-6/target/classes
sonar.test.exclusions=**/src/test/**
sonar.sources=.

马文戈尔

-Dmaven.test.failure.ignore=true -U clean org.jacoco:jacoco-maven-plugin:1.1.1:prepare-agent test

家长POM

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>***</version>
                </plugin>
                <plugin>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>***</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

共有1个答案

陆展
2023-03-14

如您所知,SonarQube不进行分析,只导入结果。

你真的应该升级到SQ LTS 8.9.x,这意味着先升级到6.7.7,然后7.9.6,再升级到8.9.x

您的覆盖问题是您必须< code > jacoco:prepare-agent ,然后运行测试(< code>-DskipTests=false),然后生成一个< code>jacoco:report,或者因为您是多模块的,< code > jacoco:report-aggregate ,最后是< code>sonar:sonar

声纳-雅科插件可以从sonar.coverage.jacoco.xmlReportPath位置获取结果。

如果未定义"'sonar.coverage.jacoco.xmlReportPath",则默认位置为:

“target/site/jacoco/jacoc.xml,target/site/jacoco it/jaco.co.xml,build/reports/jacoco/test/jacooTestReport.xml”

SonarJava analyzer V 5.12。不推荐使用JaCoCo的二进制格式(< code >)。exec文件)。支持。SonarQube 8.2中删除了exec格式的JaCoCo覆盖报告

根据sonar-jacoco-plugin-1.1的发行说明,它现在具有“ 支持sonar.coverage.jacoco.xmlReportPaths中的通配符”

SonarQube解释了为什么这些数字可能与预期不符

 类似资料:
  • 我有一个基本的maven多模块,父模块是POM,其子模块是domain、service和Web。 我已经在pom父级中添加了jacoco插件和所需的配置,以便将测试覆盖率报告附加到一个Sonar很容易找到的文件中。 我的问题是,Sonar只显示第一个模块的测试覆盖范围(是domain)(即使我用编辑器打开文件,看到其他模块的类名被追加在其中)。 这种配置会有什么问题? 为了它的价值,声纳分析被称为

  • 在运行基于 Gradle 的构建和集成测试后,我在“构建/jacoco”文件夹中成功生成了 2 个 .exec 文件。 gradle命令:“gradle清洁构建集成测试” 完成后,它将在build/jacoco文件夹下生成以下.exec文件。 test.exec integrationTest.exec 以下是我的sonar-project.properties文件。当我在Linux上运行“son

  • 如何关闭SonarQube 4中的代码覆盖?我在单元测试中使用了JMockit,在Sonar中使用了JaCoCo代码覆盖插件。它们冲突是因为它们使用不同的JavaAgent来编辑类的字节码(如我所知)。我想关闭声纳中的代码覆盖。我可以在Jacoco的设置中排除我的项目,但这没有帮助。

  • parent-child1-pom.xml-child2-pom.xml-child3-pom.xml-pom.xml 我在父pom.xml中包含了JaCoCo插件。当我从父级pom.xml运行mvn clean install sonar:sonar build时,我看到每个子级都生成自己的jacoco.exec文件。类似于child1/target/jacoco.exec,child2/tar

  • 在我们的代码中,有很多这样的日志片段: 有没有可能配置SonarQube,使这样的代码块不包含在代码覆盖率分析中?编写测试来覆盖这样的调试语句似乎没有多大意义... 我发现了如何: < li >从覆盖率分析中忽略整个文件 < li >忽略代码块中的问题 但是我没有找到仅从覆盖率分析中排除代码块的方法。

  • 我们有一个多模块maven项目。我们正在使用jacoco进行代码覆盖率分析。我准备了pom文件来运行测试用例并获取代码覆盖率。当我在本地构建项目时,我可以在sonar仪表板上看到代码覆盖率。 将更改推送到github之后,当jenkins构建触发时,sonar仪表板上的代码覆盖率不可用。我在jenkins构建日志中发现以下错误: 未收集覆盖范围信息。也许您忘记了在编译的类中包含调试信息? 在成功的