Content
Description
This task runs Checkstyle over specified Java files. The latest version of checkstyle can be found at https://checkstyle.org/. This task is included in the checkstyle distribution.
Installation
The easiest way is to include
checkstyle-10.23.0-all.jar
in the
classpath. This contains all the classes required to run
Checkstyle. Alternatively, you must include the
compile
third party dependencies listed in Project Dependencies in the
classpath.
To use the task in a build file, you will need the following
taskdef
declaration:
<taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties"
classpath="/path/to/checkstyle-10.23.0-all.jar"/>
Or, assuming that Checkstyle is in the global classpath (not
recommended), then you will need the following taskdef
declaration:
<taskdef
resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties"/>
Or if you use Ant 1.6 and later and assuming that Checkstyle is in the library search path, then you may use antlib feature of Ant (see https://ant.apache.org/manual/Types/antlib.html for more details). For example:
<project name="foo" ...
xmlns:cs="antlib:com.puppycrawl.tools.checkstyle.ant">
...
<cs:checkstyle>
...
</cs:checkstyle>
...
</project>
Parameters
See here for a description of how to define a configuration. Exactly one config location
"true"
.
No
"0"
.
No
"2147483647"
, i.e.
Integer.MAX_VALUE.
No
"false"
.
No
Note that the packageNamesFile
parameter has been dropped for Checkstyle 5.0, because of
significant changes regarding package name file handling. See for details.
Also note, that checkstyle ignores all duplicate files, specified in the file, fileset or path parameters
Nested Elements
This task supports the nested elements <fileset>,
<classpath>,
<path>,
<formatter>
, and <property>
.
The parameters for the <formatter>
element are:
The type of output to generate. The valid values are:
-
plain
- specifies the DefaultLogger -
xml
- specifies the XMLLogger -
sarif
- specifies the SarifLogger
Defaults to "plain"
.
true
.
No
A <property>
element provides a property for
expanded property values of
the configuration. The parameters for the
<property>
element are:
The key for the property.
YesExamples
An example project can be found here.
Checkstyle use ant configuration to validate its own code. See example is our git repository - config/ant-phase-verify.xml.
Run checkstyle with configuration file
docs/sun_checks.xml
on a single file
<checkstyle config="docs/sun_checks.xml" file="Check.java"/>
Run checkstyle on a set of Java files using site-wide configuration and an expanded property value
<checkstyle config="/path/to/site/sun_checks.xml">
<fileset dir="src/checkstyle" includes="**/*.java"/>
<!-- Location of cache-file. Something that is project specific -->
<property key="checkstyle.cache.file" file="target/cachefile"/>
</checkstyle>
Run checkstyle on a previously defined source path.
<!-- Somewhere in your config -->
<path id="project.sourcepath">
<fileset dir="src"
includes="**/*"
excludes="it/resources/**/*,test/resources/**/*,test/resources-noncompilable/**/*"/>
</path>
<!-- Actual checkstyle config -->
<checkstyle config="/path/to/site/sun_checks.xml">
<!-- Refer to a previously defined source path -->
<path refid="project.sourcepath" />
</checkstyle>
Run checkstyle on a set of files and output messages to standard output in plain format, and files in XML & SARIF format
<checkstyle config="docs/sun_checks.xml">
<fileset dir="src/checkstyle" includes="**/*.java"/>
<formatter type="plain"/>
<formatter type="xml" toFile="build/checkstyle_errors.xml"/>
<formatter type="sarif" toFile="build/checkstyle_errors.sarif"/>
</checkstyle>
Run checkstyle with configuration file
docs/sun_checks.xml
on a file and provide a package
names file
<checkstyle config="docs/sun_checks.xml"
packageNamesFile="myPackageNames.xml"
file="Check.java"/>
Run checkstyle in an automated build and send an email report if style violations are detected
<target name="checkstyle"
description="Generates a report of code convention violations.">
<checkstyle config="docs/sun_checks.xml"
failureProperty="checkstyle.failure"
failOnViolation="false">
<formatter type="xml" tofile="checkstyle_report.xml"/>
<fileset dir="src" includes="**/*.java"/>
</checkstyle>
<style in="checkstyle_report.xml" out="checkstyle_report.html"
style="checkstyle.xsl"/>
</target>
<!-- run this target as part of automated build -->
<target name="checkstyle-nightly"
depends="checkstyle"
if="checkstyle.failure"
description="Sends email if checkstyle detected code conventions violations.">
<!-- use your own server and email addresses below. See Ant documentation for details -->
<mail from="qa@some.domain"
tolist="someone@some.domain,someoneelse@some.domain"
mailhost="mailbox.some.domain"
subject="Checkstyle violation(s) in project ${ant.project.name}"
files="checkstyle_report.html"/>
</target>
To run checkstyle with a custom JAR with implementation of custom Checks be sure the custom JAR is found on the classpath. An example can be found at checkstyle-samples.