Sonarqube 没有正确显示 Java 项目的测试覆盖率

Posted

技术标签:

【中文标题】Sonarqube 没有正确显示 Java 项目的测试覆盖率【英文标题】:Sonar cube not showing the test coverage percentage for Java project properly 【发布时间】:2019-11-30 09:39:19 【问题描述】:

我有一个基于 spring 的 java 项目,我的测试放在 /src/test/java 文件夹中。我尝试通过

在本地运行声纳立方体

docker run -d --name sonarqube -p 9000:9000 sonarqube

为了分析测试覆盖率的百分比。即使我的项目中有很多测试,测试覆盖率也显示为 0%。单元测试的数量显示为 8,尽管还有更多。这是截图

这是我的常规设置

有人知道如何配置声纳立方体以反映测试覆盖率吗?

【问题讨论】:

你用的是哪个代码覆盖工具? 我正在使用声纳立方体 Sonarqube 是分析工具。我说的是 jacoco、clover 等代码覆盖工具。你可以在这里阅读更多内容 - dzone.com/articles/code-coverage-tools-comparison 我不知道 JaCoCo。我假设声纳立方体会变魔术。我不知道如何配置 JaCoCO。我想知道如何配置它并查看结果。你能提供一些相关的信息吗? 您可以点击此链接并尝试配置 jacoco 以进行代码覆盖 - petrikainulainen.net/programming/maven/… 此链接具有 maven 配置...但如果您使用其他类似 ant 或 gradle 的工具,您可以轻松找到他们的谷歌上的配置。 【参考方案1】:

Sonarqube 和声纳扫描仪不提供生成代码覆盖率报告的工具。这应该使用 java 的 jacoco 或 .NET 的 opencover 等工具来完成。

然后,您可以使用 sonar.coverage.jacoco.xmlReportPaths 属性将 jacoco 的输出添加到声纳扫描仪。

因此您基本上需要以下步骤进行分析:

    声纳扫描仪开始 恢复包 构建应用程序 使用代码覆盖率工具测试和计算应用的覆盖率 声纳扫描仪结束

【讨论】:

【参考方案2】:

我在尝试将 Sonar 与 Docker 结合使用时遇到了同样的情况。

对我有用的是:

    确保您已运行测试 [您可以使用 mvn test] 确保 JaCoCo 已生成覆盖率报告 [在我的案例中,报告是在文件夹 target\jacoco-report 中生成的] 设置以下指向您的 XML 报告的属性

Sonar property to be set

【讨论】:

以上是关于Sonarqube 没有正确显示 Java 项目的测试覆盖率的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube 单元测试报告不显示 Javascript 文件

SonarQube 覆盖多模块项目

SonarQube 未正确导入 Python 项目的 coverage.xml 文件

SonarQube 不显示输出

长期分支的 Sonarqube 分支结果未按预期显示

使用sonarqube gradle插件配置带有子模块的Android项目的正确方法是啥?