我一直在eclipse中使用Findbugs插件,现在想将功能移到我的Gradle构建脚本中,这样如果检测到任何严重的错误,构建将会失败。我想禁用以下错误类别:
以上是Eclipse插件的默认设置。但是在Gradle中,查看documentation我只能找到一种方法来禁用单个错误检查。然而,这是不可行的,查看source code,其中有近100个要经过并单独启用/禁用。
是否有更简单的方法来禁用上述类别,以便Gradle调用的Findbugs与Eclipse插件默认配置的行为相同?
编辑: 到目前为止,我们已经发现“excludeFilter”选项可用于指定包含应排除的错误检查程序的XML文件。然后可以在此文件中指定要排除的类别,如下所示:
<FindBugsFilter>
<Match>
<Bug category="EXPERIMENTAL"/>
</Match>
</FindBugsFilter>
可以通过在排除文件中指定类别属性来禁用错误类别:
然而,这些类别属性似乎没有记录,所以我不确定我是否找到了所有这些属性。我会找到更多信息来编辑此列表。
答案 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文件,您可以用它来过滤掉整个类别。
要进行更粗粒度的匹配,请使用代码属性。它需要以逗号分隔的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>