I use SpotBugs Maven Plugin for a static analysis and I would like to exclude a directory from the inspection. Looking at the spotbugs:check
goal documentation, it seems that it is not possible to configure the plugin is such a way. I also checked documentation for a SpotBugs filter file.
In Apache Maven PMD Plugin this can be done by using excludeRoots parameter:
<excludeRoots>
<excludeRoot>target</excludeRoot>
</excludeRoots>
Is it possible to exclude a directory from SpotBugs inspection?
It is possible to exclude a directory from inspection with SpotBugs, though the approach is different to the one you described for PMD. It is a two step process:
First create an XML filter file specifying the criteria for the directory(s) to be excluded.
Then, in pom.xml refer to that that file using the optional <excludeFilterFile>
setting. Unfortunately, the documentation for that setting is very brief.
As a simple example:
Create a filter file named ignore.xml containing the following which refers to a directory named mydir:
<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
<Match>
<Source name="~mydir\..*"/>
</Match>
</FindBugsFilter>
The documentation for the <Source>
tag is here. See the section on Java element name matching for details on how to specify the name of the <Source>
.
Then in pom.xml, in the specification for spotbugs-maven-plugin, include an <excludeFilterFile>
tag so that mydir is ignored by SpotBugs:
<configuration>
<excludeFilterFile>ignore.xml</excludeFilterFile>
</configuration>
Notes:
There is also an <includeFilterFile>
tag. See the section titled Specifying which bug filters to run in the usage documentation.
As well as Source
, SpotBugs provides several other ways to specify what code is to be included or excluded from checking. See the filter file documentation for the Package
, Class
, Method
, Local
, Field
and Type
tags.
Place your <excludeFilterFile>
in the root of your project.