我在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。
欢迎并感谢任何帮助!谢谢!
答案 0 :(得分:7)
您可以直接在声纳中为项目的配置定义排除项。
答案 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