CheckStyle
Checkstyle [1] is a tool for checking Code Standards Violations. It can be used different environments:
Description
Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard.
Checkstyle is highly configurable and can be made to support almost any coding standard. An example configuration files are supplied supporting the Sun Code Conventions, Google Java Style.
For downloading the software see the homepage of CheckStyle on SourceForge [1].
Pre-requirements
- All
- Ant
- Maven
- Internet Connection for running Maven.
- Installed version of Apache Maven [3].
Installation in Ant
To set CheckStyle in Ant add the following line of code to the build.xml. <syntaxhighlight lang="xml" line>
<property name = "checkstyle.home.dir" location = "." /> ... <taskdef resource = "com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties" classpath = "checkstyle-6.8.1-all.jar" /> ... <property name="checkstyle.sourcepath" value="src" /> <property name="checkstyle.report.path" value="." /> <property name="checkstyle.report.style" value="checkstyle-simple.xsl" /> <property name="checkstyle.report.xml" value="checkstyle-report.xml" /> <property name="checkstyle.report.html" value="checkstyle-report.html" /> ... <target name = "check" description = "Generates a report of code convention violations.">
<mkdir dir = "${checkstyle.report.path}" />
<checkstyle config = "${checkstyle.report.config}" failureProperty = "checkstyle.failure" failOnViolation = "false"> <formatter type = "xml" tofile = "${checkstyle.report.xml}"/> <fileset dir = "${checkstyle.sourcepath}" includes = "**/*.java, **/*.xml, **/*.properties" excludes = "checkstyle/" /> </checkstyle> <xslt basedir = "${checkstyle.report.path}" destdir = "${checkstyle.report.path}" style = "${checkstyle.report.style}" /> </target>
</syntaxhighlight>
Line | Description | Default | Global |
---|---|---|---|
1-2 | Property for the location of all the checkstyle-jar files. It must contain checkstyle-6.8.1-all.jar (See below). | Current Directory | /usr/local/bin/checkstyle-6.8.1 |
4-5 | Reference to the checkstyle resource | checkstyle-6.8.1-all.jar | |
7-12 | References to the checkstyle properties. | ||
14-36 | Ant-Target definition, creating the report path, running checkstyle and formats the resulting xml-report to HTML using XSLT. |
Installation in Maven
To set CheckStyle in Maven or Maven 2 add the following lines of code to the settings of the project.xml, project.properties.
Project.xml
<syntaxhighlight lang="xml">
<reports> ... <report>maven-checkstyle-plugin</report> ... </reports>
</syntaxhighlight>
Project.properties
Add the name of the file containing the checkstyle settings: <syntaxhighlight lang="bash">
- Checkstyle settings #
maven.checkstyle.excludes=**/*generated*/** maven.checkstyle.properties=${basedir}/AAB_checks.xml </syntaxhighlight>
Configuration
The default CheckStyle is highly configurable. The installation come with sample configuration files:
- Apache Avalon (avalon_checks.xml)
- Sun coding conventions (sun_checks.xml)
- Apache Turbine Framework (turbine_checks.xml), this is the base of Frame
The AAB uses its own CheckStyle convention (AAB_checks.xml), which is configured for each project separately. The format of the configuration file: <syntaxhighlight lang="xml"> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.1//EN" "http://www.puppycrawl.com/dtds/configuration_1_1.dtd"> <module name="Checker">
<module name="TreeWalker"> <module name="com.puppycrawl.tools.checkstyle.checks.GenericIllegalRegexpCheck"> <property name="format" value="System.err"/> <property name="ignoreCase" value="false"/> <property name="ignoreComments" value="false"/> <property name="message" value="Do not use System.err"/> <property name="severity" value="warning"/> </module> ... <module name="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"> <property name="ignorePattern" value="^$"/> <property name="max" value="110"/> <property name="severity" value="warning"/> <property name="tabWidth" value="4"/> </module> ... </module>
</module> </syntaxhighlight>
Problem
The CheckStyle report becomes very long and difficult to handel. There are a few checks which delivers very much lines of report lines. A comparison of the size of checkstyle-report.html file for the different checkstyles
|
See also
- Software Static Test Software Overview contains more information on other Static Software Tools.