我将SpotBugs Maven Plugin用于静态分析,并且希望从检查中排除目录。查看spotbugs:check goal documentation,似乎无法通过这种方式配置插件。我还检查了SpotBugs filter file的文档。

在Apache Maven PMD插件中,这可以通过使用excludeRoots参数来完成:

<excludeRoots>
  <excludeRoot>target</excludeRoot>
</excludeRoots>

是否可以从SpotBugs检查中排除目录?

最佳答案

尽管使用的方法与您为PMD描述的方法不同,但可以使用SpotBugs从检查中排除目录。这是一个两步过程:

  • 第一个create an XML filter file指定要排除的目录的条件。
  • 然后,在 pom.xml中,使用可选的<excludeFilterFile>设置引用该文件。不幸的是,the documentation for that setting非常简短。

  • 作为一个简单的例子:
  • 创建一个名为 ignore.xml的过滤器文件,其中包含以下内容,该文件引用了名为 mydir 的目录:
    <?xml version="1.0" encoding="UTF-8"?>
    <FindBugsFilter>
        <Match>
            <Source name="~mydir\..*"/>
        </Match>
    </FindBugsFilter>
    

    the <Source> tag is here的文档。有关如何指定<Source>名称的详细信息,请参见Java element name matching一节。
  • 然后在 pom.xml 中,在 spotbugs-maven-plugin 的规范中,包括一个<excludeFilterFile>标记,以便SpotBugs忽略 mydir :
    <configuration>
      <excludeFilterFile>ignore.xml</excludeFilterFile>
    </configuration>
    

  • 笔记:
  • 还有一个<includeFilterFile>标签。请参阅标题为的小节,该部分指定要在the usage documentation中运行的错误过滤器。
  • Source一样,SpotBugs还提供了几种其他方法来指定要包括或排除检查的代码。请参阅过滤器文件文档中的PackageClassMethodLocalFieldType标记。
  • 08-18 00:07