我目前正在评估Sonarqube 6.3(从我目前的5.5实例中进行的一次重大升级),并且我很难弄清楚 sonar.test.exclusions 设置的功能。
有这个问题:Sonar Maven Plugin: How do I exclude test source directories?似乎表明它用于从分析中排除测试文件(这就是我所追求的 - 我不希望我的声纳规则集运行在我的单元测试中)。文档https://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus也表明它用于“排除单元测试文件”(也许可以扩展它以使其更清晰?)
事情是,当我添加 sonar.test.exclusions ,其值为** / src / test / **然后运行我的分析时,我仍然会得到代码味道等等被发现:
等
当我使用 sonar.exclusions 时,它们不会显示。为什么 sonar.test.exclusions 没有达到我的预期?
答案 0 :(得分:7)
首先:如果您有Maven项目,则应使用扫描程序进行Maven(mvn sonar:sonar
)。它将简化您的配置,并自动将src / test / java文件夹注册为测试目录。
现在,如果你想手动完成配置,或者了解幕后发生了什么,这里有一个解释:SonarQube扫描仪使用2组文件,主要和测试。使用属性sonar.sources
配置主源文件。使用sonar.tests
配置测试源文件。
最重要的是,您可以使用声纳。[test。]排除属性过滤一些内容。
在您的情况下,您的问题是Foo/src/test/java/foo/bar/BarTest.java
似乎被视为主要源文件。这就是sonar.test.exclusions
没有效果的原因。
答案 1 :(得分:0)
使用具有验证目标的Maven(
...
<properties>
....
<sonar.exclusions>
**/generated/**/*,
**/model/**/*
</sonar.exclusions>
<sonar.test.exclusions>
src/test/**/*
</sonar.test.exclusions>
....
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.coverage.exclusions>
**/generated/**/*,
**/model/**/*
</sonar.coverage.exclusions>
<jacoco.version>0.7.5.201505241946</jacoco.version>
....
</properties>
....
覆盖排除配置,内部属性(向上)和jacoco插件配置:
.....
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>target/jacoco.exec</dataFile>
<outputDirectory>target/jacoco-ut</outputDirectory>
</configuration>
</execution>
</executions>
<configuration>
<systemPropertyVariables>
<jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
....