# Checkstyle

API Documentation: | `Checkstyle`

Runs Checkstyle against some source files.

### Properties

Property | Description
`checkstyleClasspath` | The class path containing the Checkstyle library to be used.
`classpath` | The class path containing the compiled classes for the source files to be analyzed.
`config` | The Checkstyle configuration to use. Replaces the `configFile` property.
`configDirectory` | Path to other Checkstyle configuration files.
`configFile` | The Checkstyle configuration file to use.
`configProperties` | The properties available for use in the configuration file. These are substituted into the configuration file.
`excludes` | The set of exclude patterns.
`ignoreFailures` | Whether this task will ignore failures and continue running the build.
`includes` | The set of include patterns.
`maxErrors` | The maximum number of errors that are tolerated before breaking the build or setting the failure property.
`maxWarnings` | The maximum number of warnings that are tolerated before breaking the build or setting the failure property.
`reports` | The reports to be generated by this task.
`showViolations` | Whether rule violations are to be displayed on the console.
`source` | The source for this task, after the include and exclude patterns have been applied. Ignores source files which do not exist.

### 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.
`reports(configureAction)` | Configures the reports to be generated by this task. The contained reports can be configured by name and closures. Example:
`source(sources)` | Adds some source to this task. The given source objects will be evaluated as per `Project.files(java.lang.Object[])`.

### 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` `checkstyleClasspath`

The class path containing the Checkstyle library to be used.

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

#### `FileCollection` `classpath`

The class path containing the compiled classes for the source files to be analyzed.

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

#### `TextResource` `config`

The Checkstyle configuration to use. Replaces the `configFile` property.

Default with `checkstyle` plugin:
  `project.checkstyle.config`

#### `DirectoryProperty` `configDirectory`

Path to other Checkstyle configuration files.

This path will be exposed as the variable `config_loc` in Checkstyle's configuration files.

Default with `checkstyle` plugin:
  `project.checkstyle.configDirectory`

#### `File` `configFile`

The Checkstyle configuration file to use.

Default with `checkstyle` plugin:
  `project.checkstyle.configFile`

#### ``Map`<`String`, `Object`>` `configProperties`

The properties available for use in the configuration file. These are substituted into the configuration file.

Default with `checkstyle` plugin:
  `project.checkstyle.configProperties`

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

The set of exclude patterns.

#### `boolean` `ignoreFailures`

Whether this task will ignore failures and continue running the build.

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

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

The set of include patterns.

#### `int` `maxErrors`

The maximum number of errors that are tolerated before breaking the build or setting the failure property.

Default with `checkstyle` plugin:
  `project.checkstyle.maxErrors`

#### `int` `maxWarnings`

The maximum number of warnings that are tolerated before breaking the build or setting the failure property.

Default with `checkstyle` plugin:
  `project.checkstyle.maxWarnings`

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

The reports to be generated by this task.

#### `boolean` `showViolations`

Whether rule violations are to be displayed on the console.

Default with `checkstyle` plugin:
  `project.checkstyle.showViolations`

#### `FileTree` `source` (read-only)

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

The `PathSensitivity` for the sources is configured to be `PathSensitivity.ABSOLUTE`. If your sources are less strict, please change it accordingly by overriding this method in your subclass.

The sources for this task are relatively relocatable even though it produces output that includes absolute paths. This is a compromise made to ensure that results can be reused between different builds. The downside is that up-to-date results, or results loaded from cache can show different absolute paths than would be produced if the task was executed.

Default with `checkstyle` plugin:
  ``sourceSet`.allJava`

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

#### `CheckstyleReports` `reports`(``Action`<? super `CheckstyleReports`>` configureAction)

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

    checkstyleTask {
      reports {
        html {
          destination "build/checkstyle.html"
        }
      }
    }

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

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

### Script block details

#### `reports` { }

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

    checkstyleTask {
      reports {
        html {
          destination "build/checkstyle.html"
        }
      }
    }

Delegates to:
  `CheckstyleReports` from `reports`