2016-02-25 4 views
3

Я использую Findbugs вместе с Gradle. У меня есть проект в witch Findbugs находит потенциальные ошибки.Как использовать Findbugs omitVisitors?

Тип ошибки ODR_OPEN_DATABASE_RESOURCE org.kec.db.connection.DBAccess.query (String) может не закрывать PreparedStatement.

Я не могу изменить код, поэтому я хотел бы добавить детектор ошибок/посетителя в список OmitVisitors.

Как я понимаю, использование OmitVisitors требует списка имен классов. Моя проблема в том, что я не могу найти карту между типом ошибки и именем класса.

Как опустить посетителя?

ответ

1

За исключением специфических ошибок для некоторых из ваших анализируемых классов может сделайте с Findbugs filters. Вам нужно придумать список совпадений классов/ошибок, которые вы хотите исключить. В вашем случае файл XML будет выглядеть следующим образом:

<FindBugsFilter> 
    <Match> 
     <Class name="org.kec.db.connection.DBAccess" /> 
     <Method name="query" /> 
     <Bug pattern="ODR_OPEN_DATABASE_RESOURCE" /> 
    </Match> 
</FindBugsFilter> 

В сценарии Gradle, файл XML с исключенными ошибками потребностей устанавливаются для excludeFilter собственности.

findbugs { 
    excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml") 
} 
0

Я скачал исходники FindBugs и побежал

find -name *.java | xargs grep -lir ODR_OPEN_DATABASE_RESOURCE 

он сказал

./src/java/edu/umd/cs/findbugs/detect/FindOpenStream.java 

Так что я думаю, вы должны использовать FindOpenStream как имя