2009-04-16 7 views
15

Мне нужно настроить файл фильтра для моего скрипта findbugs ant, который сканирует только файлы src/*, а не файлы test/*.Файл фильтра FindBugs для игнорирования тестов JUnit

Каков синтаксис проверки всех классов при игнорировании имени файла или имени пакета с помощью 'test' в имени?

ответ

22

FindBugs на самом деле сканирует скомпилированные файлы классов, а не sourcePath. Если вы компилируете свои файлы src/* и test/* в разные каталоги, вы можете просто использовать вложенный элемент <class...>.

<findbugs home="${findbugs.dir}" output="xml:withMessages" 
    outputFile="${findbugs.report.xml}" jvmargs="-Xmx256M" 
    effort="max" projectName="${ant.project.name}" 
    auxClasspathRef="findbugs.classpath" 
    sourcePath="${src.dir}"> 
    <class location="${src.classes.dir}"/> 
</findbugs> 

Это не сработает, если src/* и test/* скомпилированы в один каталог. В этом случае используйте filter file и исключите пакеты или имена классов, соответствующие испытаниям.

<findbugs home="${findbugs.dir}" output="xml:withMessages" 
    outputFile="${findbugs.report.xml}" jvmargs="-Xmx256M" 
    effort="max" projectName="${ant.project.name}" 
    auxClasspathRef="findbugs.classpath" 
    sourcePath="${src.dir}" 
    excludefilter="exclude.xml"> 
    <class location="${classes.dir}"/> 
</findbugs> 

где exclude.xml выглядит следующим образом:

<FindBugsFilter> 
    <Match> 
    <Class name="~.*Test$"/> 
    </Match> 
    <Match> 
    <Package name="~test\..*"/> 
    </Match> 
</FindBugsFilter> 
+0

хорошее объяснение ... видимо, мне нужно начать пить кофе или еще что-то. Удалил мой ответ, который корректно вводит в заблуждение. – TofuBeer

-1

Кстати, это хорошая идея для покрытия модульных тестов с FindBugs, а также. Нет причин использовать более низкие стандарты качества для тестов. Ошибки в тестировании - это просто ошибки.

Несомненно, если вы впервые запустите FindBugs, может быть много отчетов об ошибках, но количество ошибок будет сокращаться сверхурочно, если вы обратите на них внимание.

+12

Проблема заключается в том, что вы проверяете ошибки в модульном тесте (например, передаете null в качестве параметра, который помечен как @Nonnull) –

Смежные вопросы