Reputation: 5347
I'm using Windows and Eclipse 3.7 Classic with ADT plugin for Android development.
I've just installed FindBugs and it found a bug in auto-generated R.java class.
I want to exclude this class from FindBugs checks.
I've found that I can define exclude filters for FindBugs in an xml file, so I've created a file D:\Projects\eclipse\FindBugsExculde.xml with text:
<FindBugsFilter>
<Match>
<Class name="com.android.demo.notepad3.R$attr" />
</Match>
</FindBugsFilter>
I've added this file to Eclipse → Window → Preferences → Java → FindBugs → Filter files → Add... button near the "Exclude filter files" section.
But when I right-click on my project and select Find Bugs → Find Bugs I still see the error
The class name com.android.demo.notepad3.R$attr doesn't start with an upper case letter.
I have even tried to replace:
<Class name="com.android.demo.notepad3.R$attr" />
with:
<Class name="~.*" />
but still the error is there.
I tried to restart Eclipse - no luck. I even thought that maybe there is a Bug in FindBugs so it doesn't use the file specified but Procmon.exe
from SysinternalsSuite shows that it does use it each time I execute 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
What am I doing wrong?
Upvotes: 8
Views: 9597
Reputation: 15678
Following the directives from Jenkins I created a findbugs-exclude.xml
in my android workspace and added it via Eclipse → Window → Preferences → Java → FindBugs → Filter files → Add... button near the "Exclude filter files" section to findbugs. My first error was that I ticked the first checkbox (the include filter :-) section).
Then I manually started findbugs and everything was ok. The content of my file is:
<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
<Match>
<Class name="~.*\.R\$.*"/>
</Match>
<Match>
<Class name="~.*\.Manifest\$.*"/>
</Match>
</FindBugsFilter>
I am using eclipse 3.7.1 and findbugs 1.3.9. Hope that helps.
Upvotes: 22
Reputation: 7833
I just want to remind newbie that "Default Settings" is apply on new project, so you can't just exclude your filter in "Default Settings" if you want to apply it in current project:
instead you should exclude your filter in "Settings":
btw, once plugin installed and restart, Android Studio may pop up dialog on right bottom, you just have to click that link Add R.class File Filter, it will automatically generate the correct xml code for you.
Upvotes: 2
Reputation: 56
Filter file may be ignored silently when path to file is incorrect or when XML file is not valid. Try to validate filter using XSD from https://raw.githubusercontent.com/findbugsproject/findbugs/master/findbugs/etc/findbugsfilter.xsd .
Had this problem on Eclipse 4.4.2.
Upvotes: 2
Reputation: 61715
Please delete the error manually. Select the error and right click, select Delete. Then rebuild your project.
It could be that findbugs is ignoring the file correctly, but that doesn't mean that the errors it has previously raised on the file get deleted, they still exist, and you have to delete them manually.
Upvotes: 0