在Gradle构建中禁用findbugs检查的错误类别

时间:2015-07-16 13:33:19

标签: java gradle findbugs

我一直在eclipse中使用Findbugs插件,现在想将功能移到我的Gradle构建脚本中,这样如果检测到任何严重的错误,构建将会失败。我想禁用以下错误类别:

  1. 实验
  2. 安全
  3. 国际
  4. 恶意代码
  5. 以上是Eclipse插件的默认设置。但是在Gradle中,查看documentation我只能找到一种方法来禁用单个错误检查。然而,这是不可行的,查看source code,其中有近100个要经过并单独启用/禁用。

    是否有更简单的方法来禁用上述类别,以便Gradle调用的Findbugs与Eclipse插件默认配置的行为相同?

    编辑: 到目前为止,我们已经发现“excludeFilter”选项可用于指定包含应排除的错误检查程序的XML文件。然后可以在此文件中指定要排除的类别,如下所示:

    <FindBugsFilter>
            <Match>
                    <Bug category="EXPERIMENTAL"/>
            </Match> 
    </FindBugsFilter>
    

    可以通过在排除文件中指定类别属性来禁用错误类别:

    • 国际化:I18N
    • 恶意代码:MALICIOUS_CODE
    • 实验:实验
    • 正确性:正确
    • 表现:表现
    • 代码风格:STYLE
    • 不良做法:BAD_PRACTICE

    然而,这些类别属性似乎没有记录,所以我不确定我是否找到了所有这些属性。我会找到更多信息来编辑此列表。

2 个答案:

答案 0 :(得分:5)

你是对的,FindBug类别列表似乎没有完全记录。 从https://sourceforge.net/projects/findbugs/files/findbugs/3.0.1/搜索源包,您可以在默认messages.xml中找到BugCategory定义。

我提取了信息,并创建了一个匹配findbugs-3.0.1 \ etc \ messages.xml中找到的所有类别的过滤器:

update({"_id":"barrons","CArray.cat":"nails"},{"$pull":{"category.cat":{"CArray.$.count": {"$lte": 0}}}})

答案 1 :(得分:3)

之前我没有使用带有gradle的FindBugs,但听起来excludeFilter选项带有一个FindBugs XML文件,您可以用它来过滤掉整个类别。

The FindBugs Filter manual

  

要进行更粗粒度的匹配,请使用代码属性。它需要以逗号分隔的bug缩写列表。对于大多数粗粒度匹配使用类别attriute,它采用逗号分隔的bug类别名称列表:CORRECTNESS,MT_CORRECTNESS,BAD_PRACTICICE,PERFORMANCE,STYLE。

     

如果在同一元素上指定了上述多个属性,则将匹配与指定模式名称或缩写或类别之一匹配的所有错误模式。

所以我认为你应该能够制作这样的XML文件:

<FindBugsFilter>

  <Match>

    <Bug pattern="EXPERIMENTAL"/>
  </Match>

  <Match>
     <Bug pattern="MALICIOUS_CODE" />
   </Match>
     ...etc
</FindBugsFilter>