intellij 中的 SonarQube 在运行分析时未获取单元测试分支覆盖率

Jer*_*y W 5 unit-testing intellij-idea sonarqube

我\xe2\x80\x99已经在intellij中安装了SonarQube插件,并将我的项目关联到我们的声纳服务器。服务器告诉我每个类的分支覆盖率,并在我提交单元测试时更新。但是,当我运行本地分析时(右键单击项目 \xe2\x80\x93> 分析 \xe2\x80\x93> 按名称运行检查 \xe2\x80\x93> SonarQube),SonarQube 会告诉我X more branches need to be covered by unit tests to reach the minimum threshold of 65.0% branch coverage所有的课程和即使我添加更多单元测试,它也不会在本地更改\xe2\x80\x99(但它确实在服务器上更改)

\n\n

知道为什么会发生这种情况吗?

\n

Fab*_*eam 6

这是一个已知的当前限制(实际上适用于 IntelliJ 和 Eclipse 插件):本地分析无法自动执行单元测试,因此它们无法获取覆盖率结果并为您提供正确的信息。

原因是本地分析只是“标准”分析,不会将数据推送到服务器。根据定义,SonarQube 分析不执行任何外部工具,它们只是在需要时重用以前生成的报告。

如果它是基于 Maven 的项目,您有一个解决方案:只需mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true在启动本地分析之前运行即可。这应该在默认位置生成覆盖率报告,因此应该可以工作。