我正在使用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
我做错了什么?请帮帮我!
答案 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,因此,如果要将过滤器应用到当前项目中,则不能仅仅排除“默认设置”中的过滤器:
相反,您应该在“设置”中排除过滤器:
顺便说一句,一旦插件安装并重新启动,Android Studio可能会弹出右下角的对话框,您只需单击该链接添加R.class文件过滤器,它将自动生成正确的xml代码为你。
答案 2 :(得分:1)
当文件路径不正确或XML文件无效时,可以静默忽略过滤器文件。尝试使用https://raw.githubusercontent.com/findbugsproject/findbugs/master/findbugs/etc/findbugsfilter.xsd中的XSD验证过滤器。
Eclipse 4.4.2上有这个问题。
答案 3 :(得分:0)
请手动删除错误。选择错误并右键单击,选择“删除”。然后重建你的项目。
可能是findbugs正确忽略了该文件,但这并不意味着它先前在文件中引发的错误被删除,它们仍然存在,您必须手动删除它们。