如何强制代码覆盖率为零?
Posted
技术标签:
【中文标题】如何强制代码覆盖率为零?【英文标题】: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 中设置此参数,以便在我的覆盖范围内显示为零单元测试用例?
【问题讨论】:
【参考方案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=true
从 SonarQube 7.9 开始已被弃用,现在 @g-ann-sonarsource-team以上是关于如何强制代码覆盖率为零?的主要内容,如果未能解决你的问题,请参考以下文章
多个 Maven 模块声纳代码覆盖率在 sonarqube 中显示为零