【问题标题】:Eclipse+FindBugs - exclude filter files doesn't workEclipse+FindBugs - 排除过滤器文件不起作用
【发布时间】:2011-11-25 23:36:01
【问题描述】:

我正在使用带有 ADT 插件的 Windows 和 Eclipse 3.7 Classic 进行 Android 开发。

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

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

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

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

我已经将此文件添加到 Eclipse -> Window -> Preferences -> Java -> FindBugs -> Filter files -> “Exclude filter files” 部分附近的“Add...”按钮。

但是当我右键单击我的项目并选择“查找错误”->“查找错误”时,我仍然看到错误

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 中可能存在错误,因此它不使用指定的文件,但来自 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

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

【问题讨论】:

    标签: java android eclipse adt findbugs


    【解决方案1】:

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

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

    【讨论】:

    • 不幸的是,情况并非如此 :( 我已尝试按照您的建议删除它们,但下次运行“查找错误”时它们会再次出现。我还尝试清除项目-错误消失了——但如果我运行“查找错误”——它们就会出现。
    【解决方案2】:

    按照Jenkins 的指令,我在我的 android 工作区中创建了一个findbugs-exclude.xml,并通过 Eclipse -> Window -> Preferences -> Java -> FindBugs -> Filter files -> "Add..." 按钮添加了它在“排除过滤器文件”部分附近查找错误。我的第一个错误是我勾选了第一个复选框(包含过滤器 :-) 部分)。

    然后我开始手动查找错误,一切正常。我的文件内容是:

    <?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。希望对您有所帮助。

    【讨论】:

      【解决方案3】:

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

      在 Eclipse 4.4.2 上遇到过这个问题。

      【讨论】:

        【解决方案4】:

        我只是想提醒新手,“默认设置”是apply on new project,所以如果你想在当前项目中应用它,你不能只在“默认设置”中排除你的过滤器:

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

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

        【讨论】:

        • 我想我原来的问题现在已经无关紧要了,因为 Android Studio 基于 JetBrains IntelliJ 而不是 Eclipse。但希望你的回答能帮助有人在谷歌上搜索类似的问题,所以我投了赞成票:)
        猜你喜欢
        • 1970-01-01
        • 2010-11-07
        • 2020-02-03
        • 2015-02-05
        • 1970-01-01
        • 2018-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多