【问题标题】:SONAR - How to exclude packages that is defined under "sonar.test"SONAR - 如何排除在“sonar.test”下定义的包
【发布时间】:2012-01-04 06:33:43
【问题描述】:

我有一个使用声纳分析的 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“组件”选项卡中看到。不幸的是,除了“search”组件,我还可以看到“util”和“pooling”组件。我已经做了一些测试,并确定这两个组件(utils 和 pooling)是“sonar.tests”属性的结果。不过请注意,即使“util”和“pooling”出现在组件中,SONAR 在它们下都显示零文件。所以回到我的问题,无论如何我可以做些什么来排除“util”和“pooling”出现在“组件”下?也许使用属性(即声纳测试排除)?

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

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

【问题讨论】:

    标签: ant continuous-integration sonarqube


    【解决方案1】:

    来自文档:

    从 3.3 版开始,还可以: 从分析中排除测试文件: 转到 Configuration > Settings > Exclusions 并设置 > 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

    【讨论】:

    • 属性名称是sonar.test.exclusions 不是sonar.tests.exclusions
    【解决方案2】:

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

    【讨论】:

    • 这与我使用“sonar.exclude”有何不同?这种方式看起来和我目前使用的差不多,除了它使用的是 GUI,我错了吗?这如何解决我过滤“测试”的问题?如果这可行,我如何以编程方式实现这一目标?感谢您的帮助。
    • 我发布了这个作为替代。基本上他们都做同样的事情。我真的很惊讶,测试出现在组件中。它不应该那样做。文档说排除将从 src 目录进行评估。所以我不会假设测试会被分析。您在组件中看到任何类吗?
    • 我需要先澄清一下,所以在组件中我可以看到“test”里面的包,所以我只看到包,而不是“Test”作为组件。在那些包裹里面,什么都没有。什么都没有分析。我问的原因是因为我觉得在仪表板中看到它很烦人,因为它给人的印象是这些包包含在分析中,即使它们没有。
    • @lwijono 你试过 value="com/domain/utils,com/domain/pooling,com/domain/category" 也许问题是,这些文件夹中的所有内容都被忽略了,但不是文件夹本身
    • 该属性有什么作用?我在“高级参数”下的声纳文档中找不到它。你能指出我使用它的文档吗?所以我测试这个的方法是运行没有“sonar.test”的脚本,它工作得很好;它只显示“搜索”包。但是,如果我包含“sonar.test”,那么它将包含“utils”和“pooling”包。所以这就是为什么我断定它是由“sonar.test”属性引起的。
    猜你喜欢
    • 2018-01-23
    • 2022-01-16
    • 1970-01-01
    • 2012-08-26
    • 2013-10-03
    • 2020-05-25
    • 2017-12-14
    • 2016-08-19
    • 1970-01-01
    相关资源
    最近更新 更多