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

发布于 2024-07-17 08:34:54 字数 116 浏览 5 评论 0原文

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

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

I need to set up a filter file for my findbugs ant script that scans only the src/* files and not the test/* files.

What is the syntax for checking all classes while ignoring any filename or package name with 'test' in the name?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半葬歌 2024-07-24 08:34:54

FindBugs 实际上扫描编译后的类文件,而不是 sourcePath。 如果您将 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}">
  <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>

FindBugs is actually scanning the compiled class files, not the sourcePath. If you are compiling your src/* and test/* files to the different directories, you could just use the nested <class...> element.

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

That won't work if src/* and test/* are both compiled to a single directory. In that case, use a filter file and exclude the packages or class names that correspond to tests.

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

where exclude.xml looks like:

<FindBugsFilter>
  <Match>
    <Class name="~.*Test$"/>
  </Match>
  <Match>
    <Package name="~test\..*"/>
  </Match>
</FindBugsFilter>
雨轻弹 2024-07-24 08:34:54

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

当然,如果你第一次运行FindBugs,可能会有很多错误报告,但如果你留意的话,错误数量会随着时间的推移而减少。

By the way, it is a good idea to cover unit tests with FindBugs as well. There is no reason for using lower quality standards towards tests. Bugs in test are just that, bugs.

Sure, if you run FindBugs first time, there might be many bug reports, but the bug count will come down overtime if you pay any attention to them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文