FindBugs过滤器文件,用于忽略JUnit测试

use*_*133 16 java ant junit findbugs

我需要为我的findbugs ant脚本设置一个过滤器文件,它只扫描src/*文件,而不扫描test/*文件.

检查所有类的语法是什么,而忽略名称中带有'test'的任何文件名或包名?

Cov*_*ene 23

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> 
Run Code Online (Sandbox Code Playgroud)

如果将src/*和test/*编译为单个目录,那将无效.在这种情况下,请使用过滤器文件并排除与测试对应的包或类名.

<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> 
Run Code Online (Sandbox Code Playgroud)

其中exclude.xml的样子:

<FindBugsFilter>
  <Match>
    <Class name="~.*Test$"/>
  </Match>
  <Match>
    <Package name="~test\..*"/>
  </Match>
</FindBugsFilter>
Run Code Online (Sandbox Code Playgroud)