【问题标题】:How to force code coverage to Zero?如何强制代码覆盖率为零?
【发布时间】:2018-02-17 13:43:51
【问题描述】:

我有几个没有单元测试用例的 java 项目。当我尝试使用 SonarQube 分析这些项目时,我无法获得单元测试代码覆盖率,因为它没有任何测试用例。根据我的研究,我发现如果没有单元测试用例,我可以强制它显示为零。 official Jacoco Java documentation 提到了sonar.jacoco.reportMissing.force.zero=true

我的 SonarQube 分析将使用 maven 构建和 SonarQube 5.6.6 和 sonar-java 4.11.0.10660 完成。

如何在 maven 中设置此参数,以便在我的覆盖范围内显示为零单元测试用例?

【问题讨论】:

    标签: sonarqube jacoco sonarqube-scan


    【解决方案1】:

    从 6.2 版开始,SonarQube 会在分析器支持行为的情况下自动执行此操作。在该版本之前,该功能的可用性参差不齐且不完全可靠。为获得最佳效果,您应该升级 SonarQube。

    也就是说,您可以像这样在分析命令行上设置该属性:

    mvn sonar:sonar -Dsonar.jacoco.reportMissing.force.zero=true
    

    或者通过在你的 pom 中设置一个属性,如shown in the docs

    2019 年 12 月 16 日更新
    大多数语言分析器现在计算Executable Lines,因此覆盖报告中省略的文件无论如何都包含在计算中。但这只有在您提供覆盖率报告时才会生效。没有覆盖率报告 -> 根本没有覆盖率指标。

    【讨论】:

    • 谢谢 Ann,但是当我尝试使用给定的命令 [ERROR] Unknown lifecycle phase ".jacoco.reportMissing.force.zero=true". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-i d>[:<plugin-version>]:<goal>
    • 不幸的是,sonar.jacoco.reportMissing.force.zero=trueSonarQube 7.9 开始已被弃用,现在 @g-ann-sonarsource-team
    猜你喜欢
    • 2015-02-09
    • 2016-01-12
    • 1970-01-01
    • 2022-08-16
    • 2016-03-24
    • 2012-06-30
    • 2019-08-12
    • 2015-07-27
    • 2011-05-19
    相关资源
    最近更新 更多