我使用SonarQube分析了Maven的Java项目构建。每个项目都包含几个Maven模块,让我们说:
org.acme.module
- API org.acme.module.demo
- 演示此模块功能的小型演示应用程序org.acme.module.doc
- 开发人员文档org.acme.module.it
- 集成测试在理想的世界中,我想分析所有这些模块的代码质量,但仅计算API的测试覆盖率。
但是我找不到从代码覆盖中禁用整个项目的方法(sonar.coverage.exclusions
只过滤类名,其中一些模块与API共享一个包),所以现在我是试图从Sonar禁用这些模块。
我试过了:
<properties>
<sonar.skippedModules>org.acme.module.demo,org.acme.module.doc,org.acme.module.it</sonar.skippedModules>
</properties>
哪个有效,但是有很多工作,因为我有数百个这样的项目。
<properties>
<sonar.skip>true</sonar.skip>
</properties>
也可以,但我必须为每个子模块定义它。此外,现在Sonar不会分析文件,这显然是不好的原因。
我更喜欢<excludedModules>*demo*,*doc*,*it*,<excludedModules>
之类的东西,我可以在父 pom.xml 中定义一次,并在所有这些模块中使用。
您也可以从声纳模块部分here中记录的声纳管理页面执行此操作。
我很高兴片刻,直到我意识到SonarQube文档不包含&#34;跳过模块&#34;部分了。或者它可能已被移动,我无法找到它。
如何在运行其他Sonar测试的同时跳过多个模块中的代码覆盖率分析?
或者如果不可能,如何以通用方式跳过Sonar中的这些模块?
答案 0 :(得分:0)
以管理员身份登录
转到您的项目,您应该看到“管理”选项卡。 然后转到Analysis Scope,然后在coverage排除项中添加排除项:
答案 1 :(得分:0)
在所有子/子模块pom中,您可以添加以下内容,以仅从覆盖率分析中排除该模块中的所有文件。您仍将获得这些模块的SonarQube分析的其余部分。
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.coverage.exclusions>
**/*.*
</sonar.coverage.exclusions>
</properties>
</profile>
</profiles>