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 | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
The following sections give information on how the data for each column was obtained.
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.)
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:
processJavadoc
changed in UnusedImports check
(commit #afbb944,
mentioned in release notes as "bug fix")package
declarations are no longer covered by LineLength check (commit
#9a39d19,
mentioned in release notes as "bug fix")immutableClassNames
renamed to immutableClassCanonicalNames
in
VisibilityModifier check (commit
#de4485a,
mentioned in release notes as "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.
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:
excapeAllControlChars()
renamed to escapeAllControlChars()
in
JavadocUtils
(commit
#3bd3a52)getFilename()
renamed to getFileName()
in api/FileContents
(commit #7dd24c8)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.
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.
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.
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.
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.
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.
For the Maven Checkstyle Plugin, its POM files were analyzed as found on Maven Central. This column can have one of the following entries:
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.
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.
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).
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.
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.
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.
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 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.