在Sonarqube 6.3中使用sonar.test.exclusions

f1d*_*ave 4 sonarqube

我目前正在评估Sonarqube 6.3(从我当前的5.5实例中进行的一次重大升级),我在试图找出sonar.test.exclusions设置的功能时感到困惑.

有这个问题:Sonar Maven插件:如何排除测试源目录?这似乎表明它用于从分析中排除测试文件(这就是我所追求的 - 我不希望我的声纳规则集运行在我的单元测试中).文档https://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus也表明它用于"排除单元测试文件"(或许可以扩展它以使其更清晰?)

事情是,当我添加值为**/src/test/**的sonar.test.exclusions然后运行我的分析时,我仍然会找到代码气味等找到:

  • 美孚/ src目录/测试/ JAVA /富/酒吧/ BarTest.java
  • 美孚/ src目录/测试/ JAVA/LAH/LahTest.java

等等

当我使用sonar.exclusions时,它们不会出现.为什么sonar.test.exclusions没有做我期望的事情?

Jul*_*eam 9

首先:如果你有一个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没有效果.

  • `sonar.exclusions` 和 `sonar.test.exclusions` 的含义和区别是否记录在任何地方?(https://docs.sonarqube.org/latest/project-administration/narrowing-the-focus/对此没有什么用处)。 (3认同)
  • 啊。因此,如果sonar.sources首先包含测试目录,则是否定义sonar.test.exclusions并不重要,因为它们将被视为源? (2认同)