Eclipse + FindBugs - исключить файлы фильтров не работает - PullRequest
8 голосов
/ 27 сентября 2011

Я использую Windows и Eclipse 3.7 Classic с плагином ADT для разработки под Android.

Я только что установил FindBugs и обнаружил ошибку в автоматически сгенерированном классе R.java.

Я хочу исключить этот класс из проверок FindBugs.

Я обнаружил, что могу определить фильтры исключения для FindBugs в xml-файле, поэтому я создал файл D: \ Projects \ eclipse \ FindBugsExculde.xml с текстом

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

Я добавил этот файл в Eclipse -> Окно -> Настройки -> Java -> FindBugs -> Фильтр файлов -> Кнопка «Добавить ...» рядом с «Фильтром исключения»файлы ».

Но когда я щелкаю правой кнопкой мыши по своему проекту и выбираю« Найти ошибки »->« Найти ошибки », я все равно вижу ошибку

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, поэтому он не использует указанный файл, но Procmon.exe из SysinternalsSuite показывает, что он использует его каждый раз, когда я выполняю 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 ]

22 голосов
/ 12 октября 2011

Следуя указаниям Jenkins Я создал findbugs-exclude.xml в своем рабочем пространстве Android и добавил его через Eclipse -> Window -> Preferences -> Java -> FindBugs -> Filter files -> "Add. .. »рядом с разделом« Исключить файлы фильтров »для поиска ошибок. Первой моей ошибкой было то, что я поставил галочку в первом поле (раздел include filter :-)).

Потом я начал вручную находить багов и все было в порядке. Содержимое моего файла:

<?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. Надеюсь, это поможет.

2 голосов
/ 01 августа 2018

Я просто хочу напомнить новичку, что «Настройки по умолчанию» применяются к новому проекту , поэтому вы не можете просто исключить свой фильтр из «Настройки по умолчанию», если хотите применить его в текущем проекте:

enter image description here

Вместо этого вы должны исключить свой фильтр в «Настройках»:

enter image description here

Кстати, после установки и перезапуска плагина Android Studio может появиться диалоговое окно в правом нижнем углу, вам просто нужно щелкнуть эту ссылку Добавить R.class File Filter , он автоматически сгенерирует правильный код XMLВы.

enter image description here

enter image description here

1 голос
/ 07 февраля 2018

Файл фильтра может игнорироваться автоматически, если путь к файлу неверен или файл XML недействителен.Попытайтесь проверить фильтр с помощью XSD из https://raw.githubusercontent.com/findbugsproject/findbugs/master/findbugs/etc/findbugsfilter.xsd.

. Была ли эта проблема в Eclipse 4.4.2.

0 голосов
/ 27 сентября 2011

Пожалуйста, удалите ошибку вручную.Выберите ошибку и щелкните правой кнопкой мыши, выберите Удалить.Затем пересоберите ваш проект.

Возможно, findbugs правильно игнорирует файл, но это не значит, что ранее обнаруженные ошибки в файле были удалены, они все еще существуют, и вам нужно удалитьих вручную.

...