Eclipse + FindBugs - 排除过滤器文件不起作用

时间:2011-09-27 11:47:14

标签: java android eclipse adt findbugs

我正在使用Windows和Eclipse 3.7 Classic以及用于Android开发的ADT插件。

我刚刚安装了FindBugs,它在自动生成的R.java类中发现了一个错误。

我想从FindBugs检查中排除这个类。

我发现我可以在xml文件中为FindBugs定义排除过滤器,所以我创建了一个带文本的文件D:\ Projects \ eclipse \ FindBugsExculde.xml

<FindBugsFilter>
  <Match>
    <Class name="com.android.demo.notepad3.R$attr" />
  </Match>
</FindBugsFilter>

我已将此文件添加到Eclipse中 - &gt;窗口 - &gt;偏好 - &gt; Java - &gt; FindBugs - &gt;过滤文件 - &gt; “排除过滤器文件”部分附近的“添加...”按钮。

但是当我右键单击我的项目并选择“Find Bugs” - &gt; “查找错误”我仍然看到错误

The class name com.android.demo.notepad3.R$attr doesn't start with an upper case letter

我甚至试图替换

<Class name="com.android.demo.notepad3.R$attr" />

<Class name="~.*" />

但仍然存在错误。

我试图重启Eclipse - 没有运气。我甚至认为FindBugs中可能存在Bug,因此它不使用指定的文件,但是SysinternalsSuite的Procmon.exe显示每次执行FindBugs时都会使用它:

ProcessName Operation   Path                                    Result
javaw.exe   QueryOpen   D:\Projects\eclipse\FindBugsExculde.xml SUCCESS
javaw.exe   QueryOpen   D:\Projects\eclipse\FindBugsExculde.xml SUCCESS
javaw.exe   CreateFile  D:\Projects\eclipse\FindBugsExculde.xml SUCCESS
javaw.exe   CreateFile  D:\Projects\eclipse\FindBugsExculde.xml SUCCESS
javaw.exe   QueryFileInternalInformationFile D:\Projects\eclipse\FindBugsExculde.xml SUCCESS
javaw.exe   CloseFile   D:\Projects\eclipse\FindBugsExculde.xml SUCCESS
javaw.exe   ReadFile    D:\Projects\eclipse\FindBugsExculde.xml SUCCESS
javaw.exe   CloseFile   D:\Projects\eclipse\FindBugsExculde.xml SUCCESS

我做错了什么?请帮帮我!

4 个答案:

答案 0 :(得分:22)

遵循Jenkins的指令,我在我的android工作区中创建了一个findbugs-exclude.xml并通过Eclipse添加了它 - &gt;窗口 - &gt;偏好 - &gt; Java - &gt; FindBugs - &gt;过滤文件 - &gt; “排除过滤器文件”部分附近的“添加...”按钮可以找到findbugs。我的第一个错误是我勾选了第一个复选框(包含过滤器:-)部分。)

然后我开始手动findbugs,一切都很好。我的文件内容是:

<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
    <Match>
        <Class name="~.*\.R\$.*"/>
    </Match>
    <Match>
    <Class name="~.*\.Manifest\$.*"/>
    </Match>
</FindBugsFilter>

我正在使用eclipse 3.7.1和findbugs 1.3.9。希望有所帮助。

答案 1 :(得分:2)

我只是想提醒新手,“默认设置”为apply on new project,因此,如果要将过滤器应用到当前项目中,则不能仅仅排除“默认设置”中的过滤器:

enter image description here

相反,您应该在“设置”中排除过滤器:

enter image description here

顺便说一句,一旦插件安装并重新启动,Android Studio可能会弹出右下角的对话框,您只需单击该链接添加R.class文件过滤器,它将自动生成正确的xml代码为你。

enter image description here

enter image description here

答案 2 :(得分:1)

当文件路径不正确或XML文件无效时,可以静默忽略过滤器文件。尝试使用https://raw.githubusercontent.com/findbugsproject/findbugs/master/findbugs/etc/findbugsfilter.xsd中的XSD验证过滤器。

Eclipse 4.4.2上有这个问题。

答案 3 :(得分:0)

请手动删除错误。选择错误并右键单击,选择“删除”。然后重建你的项目。

可能是findbugs正确忽略了该文件,但这并不意味着它先前在文件中引发的错误被删除,它们仍然存在,您必须手动删除它们。