javamavenspotbugs

SpotBugs Maven Plugin exclude a directory


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?


Solution

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

    1. First create an XML filter file specifying the criteria for the directory(s) to be excluded.

    2. 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:

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

    2. 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: