用于忽略 JUnit 测试的 FindBugs 筛选器文件

2022-09-03 06:19:57

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

在忽略名称中带有“test”的任何文件名或包名称时检查所有类的语法是什么?


答案 1

FindBugs 实际上是在扫描已编译的类文件,而不是 .如果要将 src/* 和 test/* 文件编译到不同的目录,则可以只使用嵌套元素。sourcePath<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/* 都编译到单个目录,则这不起作用。在这种情况下,请使用筛选器文件并排除与测试对应的包或类名。

<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>

答案 2

顺便说一句,用FindBugs介绍单元测试也是一个好主意。没有理由在测试中使用较低的质量标准。测试中的错误就是这样,错误。

当然,如果你第一次运行FindBugs,可能会有很多错误报告,但是如果你注意它们,错误计数就会随着时间的推移而下降。


推荐