Overview

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.

A good example of a report that can be produced using Checkstyle and Maven can be seen here .

Features

Checkstyle can check many aspects of your source code. It can find class design problems, method design problems. It also has the ability to check code layout and formatting issues.

For a detailed list of available checks please refer to the Checks page.

Download

The latest release of Checkstyle can be downloaded from the GitHub releases page, or Maven central.

If you want to live on the bleeding edge, you can checkout the current development code from GitHub and compile yourself. Or use jitpack.io to build and get artifacts you need (you can even build your forked repo).

Previous Version Documentation

The current website contains the documentation for the latest release only. We only support this latest version.
You can find documentation for most old versions using a URL format like https://checkstyle.sourceforge.io/version/X.X where "X.X" is the version number.
Example: https://checkstyle.sourceforge.io/version/6.18 for version 6.18.

Development Cycle

Release:
  • happens at the end of each month if functional changes exist in the master branch of our repo
  • can happen by request by any user who is impacted, but it is not always guaranteed.

Checkstyle is following its own view of Hybrid Romantic and Semantic Versioning: This is in the form of "First.Second.Third"

First digit is representing Romantic version. When it is the only number increasing, the maintainers marked it as a noticeably large breaking compatibility or major conceptual change which occurred from their perspective.
Second digit is Semantic version which is a combination of major and minor. When it is the only number increasing, it means that either some breaking compatibility happened or new features/modules were introduced.
Third digit is Semantic version which is the patch version. When it is the only number increasing, it means that only defects are fixed.

Checkstyle is not using Semantic Versioning due to the reason explained at issue #3709.

JRE and JDK

Runtime of Checkstyle is limited only by minimal version or JRE.

Checkstyle version JRE version
10.x 11 and above
7.x, 8.x, 9.x 8 and above
6.x 6 and above
5.x 5 and above

Checkstyle currently is confirmed to be buildable by all JDKs from 11 through 17. Most recent JDKs may be supported. Please report an issue if there are any problems with recent JDKs.

Backport

Since Checkstyle 7, some users have been unable to continue upgrading to newer versions of the utility because of the new JDK compile requirements. The development team doesn't have the resources to keep updating the utility for older JDKs for those that can't work with the latest version.

However, some members of the community have created an unofficial backport of the latest Checkstyle releases to be run with older JDKs. It is not always an easy process and provided at the same release time as Checkstyle, but it tries to maintain a functional equivalent alternative.

Backport version Min. JRE version Link
10.0+ 8 github site
7.0 - 8.45 6 github site

Supported Java Language Version

Checkstyle can parse all Java language features introduced in Java 22 and below. We may support preview features depending on community demand, but please note that support for a given preview feature may change at any time.

Please report an issue if you encounter any issues with the support of the latest Java language features.

Limitations

Checkstyle is a single file static analysis tool, for more details please read the full list of limitations.

Additional Checks

There are other projects that provide additional checks:

Related Tools

Checkstyle is most useful if you integrate it into your build process or your development environment. The distribution includes:

Additionally plug-ins are written by third-parties. Some of them are still based on the Checkstyle 2.4 release, although there have been many improvements since then. The known plug-ins are:

If you have written a plugin for other IDEs, please let us know, so we can provide a link here.