Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse+FindBugs - exclude filter files doesn't work

I'm using Windows and Eclipse 3.7 Classic with ADT plugin for Android development.

I've just installed FindBugs and it have 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 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 do 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? Please help me!

like image 711
Kluyg Avatar asked Sep 27 '11 11:09

Kluyg


3 Answers

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 started manually 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.

like image 105
ChrLipp Avatar answered Nov 19 '22 19:11

ChrLipp


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:

enter image description here

instead you should exclude your filter in "Settings":

enter image description here

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.

enter image description here

enter image description here

like image 26
林果皞 Avatar answered Nov 19 '22 18:11

林果皞


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.

like image 2
bomanz Avatar answered Nov 19 '22 18:11

bomanz