SONAR - 如何排除“sonar.test”下定义的包

时间:2011-11-22 21:41:03

标签: ant continuous-integration sonarqube

我在JAVA有一个项目,我用声纳分析。我拥有的一些java包都在源文件夹下。我也有一些测试文件,我在不同的文件夹下。现在,在Sonar中,我以不同的结构组织我的项目,即对于项目“搜索”,我只想包括“搜索”包。使用sonar.exclusion属性很容易实现这些排除。不过,我的问题是测试怎么样?我怎样才能排除一些包?因为在我的测试中,即使我的源和测试文件夹使用相同的结构,当我指定“sonar.exclusions”时,测试包也不会自动排除。

我的文件夹结构:

/src/com/domain/
   -- search/
   -- utils/
   -- pooling/
   -- category/

/test/src/com/domain/
   -- utils/
   -- pooling/

声纳属性:

<property name="sonar.sources" value="${path}/src" />
<property name="sonar.tests" value="${path}/test/src" />
<property name="sonar.exclusions" value="com/domain/utils/**/*,com/domain/pooling/**/*,com/domain/category/**/*" />

所以,我试图只包括“搜索”包。上面的代码工作方式使得SONAR只分析我的“搜索”包。可以在SONAR“组件”选项卡中看到此包。不幸的是,除了“搜索”组件,我还可以看到“util”和“pooling”组件。我做了一些测试,并确定这两个组件(utils和pooling)是“sonar.tests”属性的结果。只是注意,尽管“util”和“pooling”显示在组件中,但SONAR在它们下面显示零文件。所以回到我的问题,无论如何,我可以做到排除“util”和“汇集”在“组件”下显示?也许使用属性(即声纳测试排除)?

顺便说一句,我使用的是SONAR 2.11并且在Red Hat linux下运行。我正在使用SONAR-TASK 1.2。

欢迎并感谢任何帮助!谢谢!

2 个答案:

答案 0 :(得分:7)

您可以直接在声纳中为项目的配置定义排除项。

exclusions

答案 1 :(得分:1)

来自文档:

  

从版本3.3开始,还可以:   排除测试文件被分析:   转到配置&gt;设置&gt;排除和设置&gt; sonar.test.exclusions属性

诀窍是:

  • sonar.exclusions:从源目录中排除文件(即sonar.sources),它对测试目录没有影响。
  • sonar.test.exclusions:从测试目录中排除文件(即sonar.tests),它对源目录没有影响。

请参阅https://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus

而且,Using sonar.test.exclusions with Sonarqube 6.3