Checkstyle Compatibility Matrix

Tired of the many incompatibilities of the Checkstyle ecosystem? Here is a consolidated matrix of Checkstyle-related product versions that helps in selecting a working Checkstyle setup for your enterprise. Explanations and notes for each column may be found below, or by clicking on the column letter.

Checkstyle Addons is compatible with nearly all versions of Checkstyle (at least all that you will reasonably use). So this matrix has nothing to do directly with Checkstyle Addons, but is provided as a service to you. Should you notice an error, please create a pull request to correct it, or just drop me a line.

You may apply highlighting to parts of the table below.

Latest major update: 2020-02-29

Checkstyle Version
Release Date
Check behavior compatible?
Public API compatible?
Java Version used to run Checkstyle
Checkstyle-
IDEA Plugin for IntelliJ
Java Version used to run IntelliJ IDEA
Eclipse-CS
NetBeans Checkstyle
Maven Checkstyle Plugin Default
Gradle Version required
Gradle Checkstyle Plugin Default
Checkstyle Addons
SevNTU Checkstyle
SonarQube Checkstyle Plugin
SonarQube platform
A B C D E F G H I J K L M N O P
8.29 2020-01-26   ≥ 8   ≥ 5.35.5 ≥ 8 8.29.0 -- 3.1.1  ≥ 2.7  ≥ 6.0.0 1.37.1 4.29 ≥ 7.9, Java 8 again
8.28 2019-12-29 --   ≥ 8   ≥ 5.35.3 ≥ 8 8.28.0 --  ≥ 2.7  ≥ 6.0.0 -- 4.28 ≥ 7.9, Java 11!
8.27 2019-11-30   ≥ 8   ≥ 5.35.0 ≥ 8 8.27.0 --  ≥ 2.7  6.1.0 - 6.5.1 ≥ 6.0.0 -- 4.27 ≥ 6.7
8.26 2019-10-27 -- --   ≥ 8   ≥ 5.34.0 ≥ 8 8.26.0 --  ≥ 2.7  ≥ 6.0.0 1.36.0 - 1.37.0 4.26 ≥ 6.7
8.25 2019-09-29 -- --   ≥ 8   ≥ 5.33.0 ≥ 8 8.25.0 --  ≥ 2.7  ≥ 6.0.0 -- 4.25 ≥ 6.7
8.24 2019-09-01 --   ≥ 8   ≥ 5.32.0 ≥ 8 8.24.0 --  ≥ 2.7  6.0.x ≥ 6.0.0 -- 4.24 ≥ 6.7
8.23 2019-07-27   ≥ 8   ≥ 5.31.0 ≥ 8 8.23.0 --  ≥ 2.7  ≥ 6.0.0 -- 4.23 ≥ 6.7
8.22 2019-06-23   ≥ 8   5.29.0 - 5.35.6 ≥ 8 8.22.0 --  ≥ 2.7  ≥ 6.0.0 -- 4.22 ≥ 6.7
8.21 2019-05-26 -- --   ≥ 8   5.28.0 - 5.35.6 ≥ 8 8.21.0 --  ≥ 2.7  ≥ 6.0.0 -- 4.21 ≥ 6.7
8.20 2019-04-28   ≥ 8   ≥ 5.27.0 ≥ 8 8.20.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.20 ≥ 6.7
8.19 2019-03-31 -- --   ≥ 8   5.26.0 - 5.35.6 ≥ 8 8.19.0 -- 3.1.0  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.19 ≥ 6.7
8.18 2019-02-25 --   ≥ 8   ≥ 5.25.0 ≥ 8 8.18.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) 1.33.0 - 1.35.0 4.18 ≥ 6.7
8.17 2019-01-27 -- --   ≥ 8   ≥ 5.25.0 ≥ 8 8.17.0 --  ≥ 2.7  5.3.0 - 5.6.4 ≥ 5.1.0 (java8a) -- 4.17 6.7 - 7.5
8.16 2018-12-30   ≥ 8   ≥ 5.24.0 ≥ 8 8.16.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.16 5.6.6 - 7.2.1
8.15 2018-11-30 -- --   ≥ 8   -- -- 8.15.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.15 5.6.6 - 7.2.1
8.14 2018-10-21   ≥ 8   ≥ 5.24.0 ≥ 8 8.14.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.14 5.6.6 - 7.2.1
8.13 2018-10-04 --   ≥ 8   5.23.0 ≥ 8 8.13.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.13 5.6.6 - 7.2.1
8.12 2018-08-04   ≥ 8   5.22.0 - 5.23.0 ≥ 8 8.12.0 --  ≥ 2.7  5.0.0 - 5.2.1 ≥ 5.1.0 (java8a) 1.32.0 4.12 5.6.6 - 7.2.1
8.11 2018-06-30 -- --   ≥ 8   5.20.0 - 5.23.0 ≥ 8 8.11.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) 1.31.0 4.11 5.6.6 - 7.2.1
8.10.1 2018-05-28   ≥ 8   ≥ 5.20.0 ≥ 8 8.10.1 --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.10.1 5.6.6 - 7.2.1
8.10 2018-04-30   ≥ 8   5.19.x ≥ 8 8.10.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) 1.30.0 4.10 5.6.6 - 7.2.1
8.9 2018-04-04 --   ≥ 8   5.19.0 - 5.24.0 ≥ 8 -- --  ≥ 2.7  ≥ 5.1.0 (java8a) 1.29.0 4.9 5.6.6 - 7.2.1
8.8 2018-01-28 --   ≥ 8   ≥ 5.18.0 ≥ 8 8.8.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) 1.28.0 4.8 5.6.6 - 7.2.1
8.7 2018-01-01 --   ≥ 8   ≥ 5.16.0 ≥ 8 8.7.0 --  ≥ 2.7  ≥ 5.1.0 (java8a) 1.27.0 4.7 5.6.6 - 7.2.1
8.6 2017-12-30 --   ≥ 8   ≥ 5.16.0 ≥ 8 -- --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.6 5.6.6 - 7.2.1
8.5 2017-11-26   ≥ 8   ≥ 5.15.0 ≥ 8 8.5.x --  ≥ 2.7  ≥ 5.1.0 (java8a) 1.26.0 4.5 5.6.6 - 7.2.1
8.4 2017-10-29 -- --   ≥ 8   5.12.0 - 5.23.0 ≥ 8 -- --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.4 5.6.6 - 7.2.1
8.3 2017-10-08 -- --   ≥ 8   ≥ 5.11.0 ≥ 8 -- --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.3 5.6.6 - 7.2.1
8.2 2017-08-31 -- --   ≥ 8   ≥ 5.10.0 ≥ 8 -- --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.2 5.6.6 - 7.2.1
8.1 2017-07-25 -- --   ≥ 8   ≥ 5.9.0 ≥ 8 -- --  ≥ 2.7  ≥ 5.1.0 (java8a) -- 4.1 5.6.6 - 7.2.1
8.0 2017-07-02 -- --   ≥ 8   ≥ 5.7.0 ≥ 8 8.0.0 --  ≥ 2.7  ≥ 5.0.0 (java8a) -- 4.0 5.6.6 - 7.2.1
7.8.2 2017-06-18   ≥ 8   ≥ 5.9.1 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) -- 3.8 5.6.6 - 7.2.1
7.8.1 2017-06-03   ≥ 8   5.6.0 - 5.9.0 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) -- -- --
7.8 2017-05-29   ≥ 8   -- -- -- --  ≥ 2.7  ≥ 2.0.0 (java8a) -- -- --
7.7 2017-05-04 --   ≥ 8   5.5.0 - 5.9.0 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) -- 3.7 5.6.6 - 7.2.1
7.6.1 2017-03-26 --   ≥ 8   ≥ 5.4.0 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) -- 3.6.1 5.6.4 - 7.2.1
7.6 2017-02-26 --   ≥ 8   5.3.0 - 5.23.0, ≥ 5.24.1 ≥ 8 7.6.0 --  ≥ 2.7  ≥ 2.0.0 (java8a) 1.24.1 - 1.25.0 3.6 5.6.4 - 7.2.1
7.5.1 2017-02-04   ≥ 8   ≥ 5.2.0 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) -- 3.5.1 5.6.4 - 7.2.1
7.5 2017-01-29 --   ≥ 8   5.1.0 - 5.9.0 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) -- 3.5 5.6.4 - 7.2.1
7.4 2016-12-31 --   ≥ 8   4.35.0, ≥ 5.0.0 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) -- 3.4 5.6.4 - 7.2.1
7.3 2016-11-25 --   ≥ 8   4.34.0, ≥ 5.0.0 ≥ 8 7.3.0 --  ≥ 2.7  ≥ 2.0.0 (java8a) -- 3.3 4.5.2 - ?
7.2 2016-10-30 --   ≥ 8   4.33.0, ≥ 5.0.0 ≥ 8 7.2.0 --  ≥ 2.7  ≥ 2.0.0 (java8a) 1.22.0 - 1.24.0 3.2 4.5.2 - ?
7.1.2 2016-09-30 --   ≥ 8   ≥ 5.0.0 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) 1.19.0 - 1.22.0 3.1.2 4.5.2 - ?
7.1.1 2016-09-05 --   ≥ 8   4.32.x, 5.0.0 - 5.23.0 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) 1.19.0 - 1.22.0 3.1.1 4.5.2 - ?
7.1 2016-07-31   ≥ 8   4.31.0, 5.0.0 - 5.23.0 ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) 1.19.0 - 1.22.0 3.1 4.5.2 - ?
7.0 2016-06-26 -- --   ≥ 8   4.30.x ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java8a) 1.19.0 - 1.22.0 -- --
6.19 2016-05-29   ≥ 7   4.29.x, ≥ 5.0.0 ≥ 8 6.19.x --  ≥ 2.7  3.3 - 4.10.2 ≥ 2.0.0 (java7) 1.19.0 - 1.22.0 -- --
6.18 2016-05-01   ≥ 7   4.28.x ≥ 8 -- -- 3.0.0  ≥ 2.7  ≥ 2.0.0 (java7) 1.19.0 - 1.22.0 -- --
6.17 2016-03-25 --   ≥ 7   4.27.x ≥ 8 -- --  ≥ 2.7  ≥ 2.0.0 (java7) 1.19.0 - 1.22.0 -- --
6.16.1 2016-03-03 --   ≥ 7   ≥ 5.0.0 ≥ 8 6.16.0 --  ≥ 2.7  ≥ 2.0.0 (java7) 1.19.0 - 1.22.0 -- --
6.16 2016-02-28 --   ≥ 7   -- -- -- --  ≥ 2.7  -- -- -- --
6.15 2016-01-31   ≥ 7   4.25.0 - 4.26.0, 5.0.0 - 5.32.0 ≥ 8 -- 4.1.0  ≥ 2.7  2.0.0 - 4.2.0 1.19.0 - 1.20.0 -- --
6.14.1 2015-12-30   ≥ 7   4.23.0 - 4.24.0, 5.0.0 - 5.32.0 ≥ 8 6.14.0 --  ≥ 2.7  1.3.0 - 4.2.0 1.19.0 - 1.20.0 -- --
6.14 2015-12-28 -- --   ≥ 7   -- -- -- --  ≥ 2.7  1.3.0 - 4.2.0 -- -- --
6.13 2015-11-30 --   ≥ 7   4.22.x, 5.0.0 - 5.32.0 ≥ 8 -- --  ≥ 2.7  1.3.0 - 4.2.0 1.15.0 - 1.18.0 -- --
6.12.1 2015-11-05 --   ≥ 7   4.21.x, 5.0.0 - 5.32.0 ≥ 8 -- --  ≥ 2.7  1.3.0 - 4.2.0 1.15.0 - 1.18.0 2.4 4.5.2 - ?
6.12 2015-11-01 -- --   ≥ 7   5.0.0 - 5.23.0 ≥ 8 -- --  ≥ 2.7  1.3.0 - 4.2.0 1.15.0 - 1.18.0 -- --
6.11.2 2015-10-05   ≥ 7   4.20.x, 5.0.0 - 5.32.0 ≥ 8 6.11.x -- 2.17  ≥ 2.7  1.3.0 - 4.2.0 1.15.0 - 1.18.0 -- --
6.11.1 2015-10-02   ≥ 7   -- -- -- --  ≥ 2.7  1.3.0 - 4.2.0 1.15.0 - 1.18.0 -- --
6.11 2015-09-27   ≥ 7   -- -- -- --  ≥ 2.7  1.3.0 - 4.2.0 1.15.0 - 1.18.0 -- --
6.10.1 2015-09-01   ≥ 7   4.19.x, 5.0.0 - 5.32.0 ≥ 8 -- --  ≥ 2.7  1.3.0 - 4.2.0 -- -- --
6.10 2015-09-01   ≥ 7   -- -- -- -- -- ≥ 2.7 1.3.0 - 4.2.0 -- -- --
6.9 2015-08-07   ≥ 7   4.18.x, 5.0.0 - 5.32.0   ≥ 8   6.9.0 -- ≥ 2.7    ✓    1.3.0 - 4.2.0 -- -- --
6.8.2 2015-08-05   ≥ 7   5.0.0 - 5.32.0 ≥ 8 -- -- ≥ 2.7 1.3.0 - 4.2.0 1.13.6 - 1.14.0 -- --
6.8.1 2015-07-01   ≥ 7   4.17.x   ≥ 8   6.8.0 -- ≥ 2.7 1.3.0 - 4.2.0 1.13.6 - 1.14.0 -- --
6.8 2015-06-29 ≥ 7 -- -- -- -- ≥ 2.7 1.3.0 - 4.2.0 1.13.6 - 1.14.0 -- --
6.7 2015-06-01 ≥ 7 4.16.0, 5.0.0 - 5.32.0 ≥ 8 -- 4.0.0 1.0 - 2.6 1.3.0 - 4.2.0 1.13.6 - 1.14.0 -- --
6.6 2015-04-27 ≥ 7 4.15.0, 5.0.0 - 5.32.0 ≥ 8 -- -- 1.0 - 2.6 1.3.0 - 4.2.0 1.13.0 - 1.13.5 -- --
6.5 2015-03-28 ≥ 7 4.14.x, 5.0.0 - 5.32.0 ≥ 8 6.5.x -- 1.0 - 2.6 1.3.0 - 4.2.0 1.13.0 - 1.13.5 -- --
6.4.1 2015-03-04 ≥ 7 5.0.0 - 5.32.0 ≥ 8 6.4.x -- 1.0 - 2.6 1.0.0 - 4.2.0 -- 2.3 4.5.2 - ?
6.4 2015-02-28 ≥ 7 -- -- -- -- 1.0 - 2.6 1.3.0 - 4.2.0 -- -- --
6.3 2015-02-02 ≥ 7 -- -- -- -- 1.0 - 2.6 1.3.0 - 4.2.0 -- -- --
6.2 2014-12-28 ≥ 7 5.0.0 - 5.32.0 ≥ 8 6.2.x -- 2.16 1.0 - 2.6 1.3.0 - 4.2.0 -- -- --
6.1.1 2014-11-27 ≥ 6 4.11.0 - 4.13.2 ≥ 6 6.1.1 -- 2.15 1.0 - 2.6 1.3.1 - 4.2.0 (java6) -- -- --
6.1 2014-11-14 ≥ 6 4.10.0 ≥ 6 6.1.0 -- 1.0 - 2.6 1.3.1 - 4.2.0 (java6) -- 2.2 4.2 - 4.4
6.0 2014-10-23 ≥ 6 4.9.0 ≥ 6 -- -- 1.0 - 2.6 1.3.1 - 4.2.0 (java6) -- -- --
5.9 2014-10-17 ≥ 5 4.8.0 ≥ 6 5.9.x -- 1.0 - 2.6 2.4 - 3.2.1 -- -- -- --
5.8 2014-10-05 ≥ 5 4.7.0 ≥ 6 5.8.x -- 2.14 1.0 - 2.6 -- 1.8.0 - 1.12.0 -- --
5.7 2014-02-03 ≥ 5 4.5.0 - 4.6.2 ≥ 6 5.7.x 3.4.0 2.12 - 2.13 1.0 - 2.6 2.0 - 2.3 -- 1.8.0 - 1.12.0 -- --
5.6 2012-09-18 ≥ 5 3.9.2-4.4.3
3.9 - 3.9.1
≥ 6
≥ 5
5.6.x 3.3.0 2.10 - 2.11 1.0 - 2.6 1.4 - 1.12 -- 1.6.0 - 1.12.0 2.1.1
2.0
4.2 - 4.4
3.6-4.1.2
5.5 2011-11-05 ≥ 5 3.8.x ≥ 5 5.5.x 3.1.0 2.9.x 1.0 - 2.6 1.0 - 1.3 -- 1.5.0 - 1.12.0 -- --
5.4 2011-07-14 ≥ 5 3.5 ≥ 5 5.4.x 3.0.x 2.7 - 2.8 1.0 - 2.6 -- 1.8.0 - 1.11.0 -- --
5.3 2010-10-19 ≥ 5 3.3.2 ≥ 5 5.3.x -- 1.0 - 2.6 ✓ (0.9) -- 1.8.0 - 1.11.0 -- --
5.2 2010-09-25 ≥ 5 -- -- 5.2.x -- 1.0 - 2.6 -- 1.8.0 - 1.11.0 -- --
5.1 2010-02-16 ≥ 5 3.1.2 ≥ 5 5.1.x -- (✓) (1.0 - 2.6) (✓) -- -- --
5.0 2009-04-18 ≥ 5 3.0.13 ≥ 5 5.0.x 2.0.0 (2.4 - 2.6) (1.0 - 2.6) (0.8) -- -- --
A C D E F G H I J K L M N O P

Detail Notes

The following sections give information on how the data for each column was obtained.

A. Checkstyle Version

This column simply contains all Checkstyle versions that were released, starting from version 5.0. Version 5.0 was the first Checkstyle version to require Java 5. Since this document was started in 2015, older Java levels seem to be of historical rather than practical interest.
The versions shown in parentheses are considered “broken” because of serious compatibility problems (Checkstyle issues #505 and #2997). These issues mean that custom checks that were not explicitly built against that version of Checkstyle will likely fail to work. (Checkstyle Addons works for 6.0, 6.1, and 6.1.1 because it’s java6 variant is explicitly built against 6.1.1 and the error is consistent across these three versions.)

C. Check behavior backward compatible?

A check mark in this column indicates that a version upgrade of Checkstyle from the previous version:

Only the differences to the immediately preceding version are considered. This information was primarily gathered from the release notes, but additional analysis of the commit history on GitHub has turned up further breaking changes:

Checkstyle
– Breaking Change
7.6
– set of acceptable tokens reduced in IllegalTokenText check (commit #cd88872)
6.12.1
– default value of property processJavadoc changed in UnusedImports check (commit #afbb944, mentioned in release notes as "bug fix")
6.12
package declarations are no longer covered by LineLength check (commit #9a39d19, mentioned in release notes as "bug fix")
6.4.1
– property immutableClassNames renamed to immutableClassCanonicalNames in VisibilityModifier check (commit #de4485a, mentioned in release notes as "bug fix")
6.3
– Issue #585 mentioned as the only breaking change in the release notes is not in fact breaking anything, but the IllegalType check got its default illegal types changed (commit #677acc1)
5.8
TypeName check now covers enums and annotations (commits #686d009 and #f3d4337, mentioned in release notes as "new feature" and "bug fix")

This is not a complete list of breaking changes - only the first breaking change was confirmed, but more may exist. The breaking change may not affect your configuration, if you don’t use the changed check.

D. Public API backward compatible?

A check mark in this column indicates that a version upgrade of Checkstyle from the previous version does not require changes to a custom check, as long as that custom check uses only the public API. Cases where the custom check is implemented by subclassing a built-in check were not considered. Also, changes to test code were not considered, so it is possible that unit tests would fail but production code would not. Only the differences to the immediately preceding version are considered.
This information was primarily gathered from the release notes, but additional analysis of the commit history on GitHub has turned up further breaking changes:

Checkstyle
– Breaking Change
8.15
– several command line options renamed / changed as explained here
8.13
– FileSetChecks which flag an entire file rather than a piece of code now need to report their issues on line 1 instead of line 0. This is a semantic change introduced with checkstyle/checkstyle#6000. Custom checks which still report their issues on line 0 may run into problems when interacting with other tools, for example sonar-checkstyle would crash before 4.19 (checkstyle/sonar-checkstyle#199).
7.7
– public method excapeAllControlChars() renamed to escapeAllControlChars() in JavadocUtils (commit #3bd3a52)
7.6.1
– error handling changed / different exceptions thrown (commit #ce21086)
6.12
– public method renamed in utils/CheckUtils (commit #e2b4e68), exception handling changed in Checker (issue #2109, commit #f020066)
6.9
– public methods removed from api/JavadocTagInfo (commit #534536a)
6.6
– public method getFilename() renamed to getFileName() in api/FileContents (commit #7dd24c8)
5.7
– signature of public method fireErrors() changed in api/MessageDispatcher (commit #1d614c3)

This is not the complete list of undocumented breaking changes - only the first breaking change was confirmed, but more may exist. The breaking change may not affect your custom checks - if you don’t make use of the changed part of the API.

E. Java Version used to run Checkstyle

This is the Java version required by Checkstyle, i.e. the version of the JVM in which the Checkstyle process is running. It has nothing to do with the Java version of the code being analyzed. Java versions are backwards compatible, so only a minimum version is shown. The required Java version is clearly stated in the Checkstyle release notes. Where that did not suffice, the class files of the binary distributions were used to obtain the minimum Java version.

F. Checkstyle-IDEA

The compatibility information was obtained by unpacking each version of Checkstyle-IDEA and looking inside which versions of Checkstyle it contained. As a cross-check, the version history of Checkstyle-IDEA was referenced.
Since version 5.0.0 of the plugin, multiple versions of Checkstyle are supported at the same time. There is now a file called checkstyle-idea.properties in the plugin sources which lists all the bundled and supported Checkstyle versions. This file is a source of truth, because it is also used by the plugin build process to configure the actual bundling.

G. Java Version required by Checkstyle-IDEA

Checkstyle-IDEA sometimes requires a more recent Java version than Checkstyle itself. Depending on the Checkstyle-IDEA version, it may be required to run IntelliJ IDEA at a particular Java level, which is given in this column. The information was obtained by looking inside the org.infernus.idea.checkstyle.CheckStylePlugin class file and reading the version number of the class file format.

H. Eclipse-CS

Eclipse-CS, the Checkstyle plugin for Eclipse, was very professionally managed by Lars Ködderitzsch. Its version numbers are synched to the Checkstyle version numbers, and every change is documented in its release notes. The required Java level is the same as for Checkstyle itself.
In 2018, Lars decided to put the project into the hands of the core Checkstyle team, who are looking for a new maintainer.

I. NetBeans Checkstyle

The NetBeans IDE supports Checkstyle by way of the Checkstyle Beans plugin. This plugin bundles a fixed Checkstyle version, which is updated every once in a while. The plugin consists of two JARs, of which the one called netbeans-checkstyle-library-x.x.x.nbm contains the bundled Checkstyle JAR in its netbeans/modules/autoload/ext folder. This is how the data for this column was gathered. The historical versions of the plugin are available from the plugin developer’s website.

J. Maven Checkstyle Plugin

For the Maven Checkstyle Plugin, its POM files were analyzed as found on Maven Central. This column can have one of the following entries:

Entry
– Description
– This version of Checkstyle can be used, but must be configured explicitly. Be sure to choose the base version of the plugin to match your Java version (for example, use 2.15 if on Java 6). In 2015, the Checkstyle team has started checking compatibility with the Maven Checkstyle Plugin in their build process, so it generally works well.
2.15
– The version number of the Maven Checkstyle plugin which is configured to use this version of Checkstyle by default. This implies a checkmark (✓).
(✓) or (2.4)
– This version of Checkstyle can be used, but it is not available on Maven Central, so you would have to provide it via your own infrastructure.
--
– This version of Checkstyle cannot be used with Maven.

TODO We may have to improve on this data by actually trying the different combinations of Maven Plugin and Checkstyle versions, because breaking changes are introduced and may forbid specific combinations.

K. Gradle

In Gradle 1.0, the Gradle Checkstyle plugin was created by extracting it out of the Code Quality plugin which existed in Gradle 0.9. At the same time, the toolVersion property was introduced to the Gradle Checkstyle plugin, which allows choosing the Checkstyle version to run. Previous versions of Gradle used hardcoded Checkstyle versions, which is why they are not included in our matrix.
Up to a breaking change in Checkstyle 6.8 (Checkstyle issue #1108), Gradle was compatible with all versions of Checkstyle that are available on Maven Central. Checkstyle 5.2 is the oldest version available there, so it is also the oldest you can use with Gradle, unless you are willing to provide it via your own infrastructure. Because of this, the corresponding entries are set in parentheses.
This data was gathered by GitHub source code analysis.

l. Gradle Checkstyle Plugin

This column shows which versions of Checkstyle are used as the default version by the Gradle Checkstyle Plugin. This information was gained by analyzing the source code of the plugin on GitHub. The default version gets used when toolVersion is not set. A checkmark (✓) indicates that the Checkstyle version is available via toolVersion, but not by default. The bottom line is that one should always set toolVersion.
Entries are set in parentheses when either the Checkstyle version is less than 5.2 (because then it is not available on Maven Central), or the Gradle version is less than 1.0 (because then no Gradle Checkstyle plugin exists).

M. Checkstyle Addons

Checkstyle Addons features a build process that actually tries running the compiled checks against every single Checkstyle runtime. Since we have very high test coverage, the fact that all unit tests complete successfully against a Checkstyle runtime is significant. Checkstyle Addons also includes a reflection-based component that smoothes over the API differences between Checkstyle versions, so that we have full compatibility with almost every recent Checkstyle version.

However, at times the core Checkstyle API for custom checks is so thoroughly broken that we can’t make up for it. In those cases, we ship variants of Checkstyle Addons in order to compensate. The name in parentheses (e.g. (java7)) indicates that the most recent version of Checkstyle Addons would need to be used in that variant in order to be compatible with the Checkstyle version in that row. Naturally, earlier versions of Checkstyle Addons exist which do not require a special variant.

N. SevNTU Checkstyle

For SevNTU Checkstyle, source versions are tagged on GitHub for versions 1.8.0 and upwards, so source archives are easily available for downloading. For versions down to 1.5.x, POM files could still be found with the binaries which give information on the Checkstyle version for which that version of SevNTU Checkstyle was built. Starting from SevNTU Checkstyle version 1.24.0, binaries are distributed via Maven Central.

For versions 1.8.0 - 1.22.0, SevNTU Checkstyle was compiled and the unit tests were executed against the different Checkstyle runtimes in order to simply try if it works. When all tests passed without errors, the versions were considered compatible. Versions declared in the POM files were always considered compatible (and proved to be so in the tests conducted). Compilation and tests for SevNTU Checkstyle versions 1.13.0 and upwards were performed with Java 7, all previous versions were compiled and tested with Java 6. Compatibility was analyzed based on the assumption that the full SevNTU Checkstyle feature set is required to work. In many cases, only a handful of tests were failing, so it may still be an option to use SevNTU Checkstyle with an incompatible version of Checkstyle, if the subset of SevNTU checks you are using work.

Starting with SevNTU version 1.23.0, this method of trying it out became too complex, because the correct class path is not easy to construct due to the convoluted nature of SevNTU dependencies. So we switched to simply providing the Checkstyle version against which a particular version of the SevNTU checks were built. This will miss a few working combinations (especially where the corresponding Checkstyle versions are compatible), but at least it’s doable and we are sure the information is correct.

O. SonarQube Checkstyle Plugin

The SonarQube Checkstyle Plugin lists the Checkstyle versions it uses on its website. The given version of Checkstyle is bundled with the plugin and cannot be changed. The plugin has a dependency on the SonarQube platform and the SonarQube Java plugin. Updates to this plugin are quite rare, so only a small number of Checkstyle versions are supported by SonarQube.

P. SonarQube Platform

This column shows the version of the SonarQube platform (a.k.a. the SonarQube version) required to run the SonarQube Checkstyle plugin at the given version.

Jenkins / Bamboo

Jenkins does not run Checkstyle, but parses the XML report generated by Checkstyle. Still, it needs to understand what it sees. It seems that the format of the XML report created by Checkstyle has been quite stable over time. A detailed analysis of Jenkins and Bamboo plugin compatibility may be added to this page in the future.