# FindBugs

API Documentation: | `FindBugs`

Analyzes code with FindBugs. See the FindBugs Manual for additional information on configuration options.

### Properties

Property | Description
`classes` | The classes to be analyzed.
`classpath` | Compile class path for the classes to be analyzed. The classes on this class path are used during analysis but aren't analyzed themselves.
`effort` | The analysis effort level. The value specified should be one of `min`, `default`, or `max`. Higher levels increase precision and find more bugs at the expense of running time and memory consumption.
`excludeFilter` | The filename of a filter specifying bugs to exclude from being reported.
`excludes` | The set of exclude patterns.
`findbugsClasspath` | Class path holding the FindBugs library.
`ignoreFailures` | Whether or not to allow the build to continue if there are warnings.
`includeFilter` | The filename of a filter specifying which bugs are reported.
`includes` | The set of include patterns.
`maxHeapSize` | The maximum heap size for the forked findbugs process (ex: '1g').
`omitVisitors` | Similar to `visitors` except that it specifies bug detectors which should not be run. By default, no visitors are omitted.
`pluginClasspath` | Class path holding any additional FindBugs plugins.
`reportLevel` | The priority threshold for reporting bugs. If set to `low`, all bugs are reported. If set to `medium` (the default), medium and high priority bugs are reported. If set to `high`, only high priority bugs are reported.
`reports` | The reports to be generated by this task.
`source` | The source for this task, after the include and exclude patterns have been applied. Ignores source files which do not exist.
`visitors` | The bug detectors which should be run. The bug detectors are specified by their class names, without any package qualification. By default, all detectors which are not disabled by default are run.

### Methods

Method | Description
`exclude(excludeSpec)` | Adds an exclude spec. This method may be called multiple times to append new specs.The given closure is passed a `FileTreeElement` as its parameter. The closure should return true or false. Example:
`exclude(excludes)` | Adds an ANT style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
`exclude(excludes)` | Adds an ANT style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
`exclude(excludeSpec)` | Adds an exclude spec. This method may be called multiple times to append new specs. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
`include(includeSpec)` | Adds an include spec. This method may be called multiple times to append new specs. The given closure is passed a `FileTreeElement` as its parameter. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.
`include(includes)` | Adds an ANT style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.
`include(includes)` | Adds an ANT style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.
`include(includeSpec)` | Adds an include spec. This method may be called multiple times to append new specs. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.
`source(sources)` | Adds some source to this task. The given source objects will be evaluated as per `Project.files()`.

### Script blocks

Block | Description
`reports` | Configures the reports to be generated by this task. The contained reports can be configured by name and closures. Example:

### Property details

#### `FileCollection` `classes`

The classes to be analyzed.

Default with `findbugs` plugin:
  ``sourceSet`.output`

#### `FileCollection` `classpath`

Compile class path for the classes to be analyzed. The classes on this class path are used during analysis but aren't analyzed themselves.

Default with `findbugs` plugin:
  ``sourceSet`.compileClasspath`

#### `String` `effort`

The analysis effort level. The value specified should be one of `min`, `default`, or `max`. Higher levels increase precision and find more bugs at the expense of running time and memory consumption.

Default with `findbugs` plugin:
  `project.findbugs.effort`

#### `File` `excludeFilter`

The filename of a filter specifying bugs to exclude from being reported.

Default with `findbugs` plugin:
  `project.findbugs.excludeFilter`

#### ``Set`<`String`>` `excludes`

The set of exclude patterns.

#### `FileCollection` `findbugsClasspath`

Class path holding the FindBugs library.

Default with `findbugs` plugin:
  `project.configurations.findbugs`

#### `boolean` `ignoreFailures`

Whether or not to allow the build to continue if there are warnings.

Default with `findbugs` plugin:
  `project.findbugs.ignoreFailures`

#### `File` `includeFilter`

The filename of a filter specifying which bugs are reported.

Default with `findbugs` plugin:
  `project.findbugs.includeFilter`

#### ``Set`<`String`>` `includes`

The set of include patterns.

#### `String` `maxHeapSize`

The maximum heap size for the forked findbugs process (ex: '1g').

Default with `findbugs` plugin:
  `null`

#### ``Collection`<`String`>` `omitVisitors`

Similar to `visitors` except that it specifies bug detectors which should not be run. By default, no visitors are omitted.

Default with `findbugs` plugin:
  `project.findbugs.omitVisitors`

#### `FileCollection` `pluginClasspath`

Class path holding any additional FindBugs plugins.

Default with `findbugs` plugin:
  `project.configurations.findbugsPlugins`

#### `String` `reportLevel`

The priority threshold for reporting bugs. If set to `low`, all bugs are reported. If set to `medium` (the default), medium and high priority bugs are reported. If set to `high`, only high priority bugs are reported.

Default with `findbugs` plugin:
  `project.findbugs.reportLevel`

#### `FindBugsReports` `reports` (read-only)

The reports to be generated by this task.

#### `FileTree` `source`

The source for this task, after the include and exclude patterns have been applied. Ignores source files which do not exist.

#### ``Collection`<`String`>` `visitors`

The bug detectors which should be run. The bug detectors are specified by their class names, without any package qualification. By default, all detectors which are not disabled by default are run.

Default with `findbugs` plugin:
  `project.findbugs.visitors`

### Method details

#### `SourceTask` `exclude`(`Closure` excludeSpec)

Adds an exclude spec. This method may be called multiple times to append new specs.The given closure is passed a `FileTreeElement` as its parameter. The closure should return true or false. Example:

    copySpec {
      from 'source'
      into 'destination'
      //an example of excluding files from certain configuration:
      exclude { it.file in configurations.someConf.files }
    }

If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.

#### `SourceTask` `exclude`(``Iterable`<`String`>` excludes)

Adds an ANT style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.

#### `SourceTask` `exclude`(``String`...` excludes)

Adds an ANT style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.

#### `SourceTask` `exclude`(``Spec`<`FileTreeElement`>` excludeSpec)

Adds an exclude spec. This method may be called multiple times to append new specs. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.

#### `SourceTask` `include`(`Closure` includeSpec)

Adds an include spec. This method may be called multiple times to append new specs. The given closure is passed a `FileTreeElement` as its parameter. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.

#### `SourceTask` `include`(``Iterable`<`String`>` includes)

Adds an ANT style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.

#### `SourceTask` `include`(``String`...` includes)

Adds an ANT style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.

#### `SourceTask` `include`(``Spec`<`FileTreeElement`>` includeSpec)

Adds an include spec. This method may be called multiple times to append new specs. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.

#### `SourceTask` `source`(``Object`...` sources)

Adds some source to this task. The given source objects will be evaluated as per `Project.files()`.

### Script block details

#### `reports` { }

Configures the reports to be generated by this task. The contained reports can be configured by name and closures. Example:

    findbugsTask {
      reports {
        xml {
          destination "build/findbugs.xml"
        }
      }
    }

Delegates to:
  `FindBugsReports` from `reports`