aboutsummaryrefslogtreecommitdiff
path: root/src/xdocs/releasenotes_old.xml
blob: 5bf0f1a71da19a93e1ca35daea8130c0b325c1a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
<?xml version="1.0" encoding="UTF-8"?>

<document xmlns="http://maven.apache.org/XDOC/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">

  <head>
    <title>Old Release Notes</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"/>
    <script type="text/javascript" src="js/anchors.js"/>
    <script type="text/javascript" src="js/google-analytics.js"/>
    <link rel="icon" href="images/favicon.png" type="image/x-icon" />
    <link rel="shortcut icon" href="images/favicon.ico" type="image/ico" />
  </head>

  <body>
    <section name="Release 5.7">
      <p>New features:</p>
      <ul>
        <li>
          Support
          <a href="config_filters.html#SuppressWarningsFilter">SuppressWarningsFilter</a>
          to use <code>@SuppressWarnings</code> annotations to suppress
          violations. Thanks to Trevor Robinson for patch #156.
        </li>
        <li>
          New: UniqueProperties check. Thanks to Pavel Baranchikov. <a href="https://github.com/checkstyle/checkstyle/pull/19">#19</a>
        </li>
        <li>
          Support for '&amp;' in nested generics. Thanks to <a
          href="https://github.com/dkomanov">dkomanov</a>.
        </li>
        <li>
          Allow HeaderCheck definition to be specified as URL. Thanks to
          tnarake.
        </li>
        <li>
          Allow additional URL schemes for SuppressionFilter
          configuration. Thanks to tnarake.
        </li>
      </ul>
      <p>Bug fixes:</p>
      <ul>
        <li>
          added support for a separate throws indentation configuration
        </li>
        <li>
          SuppressionCommentFilter ignores messageFormat. Patch from Chris Brigham.
        </li>
        <li>
          Exclude some java.util classes from Class Fan out. Thanks to Ivan Sopov and Vincent Massol.<a href="https://github.com/checkstyle/checkstyle/issues/31">#31</a>
        </li>
        <li>
          Allow to ignore java.lang and certain other classes. Thanks to Ivan Sopov and Vincent Massol.<a href="https://github.com/checkstyle/checkstyle/issues/33">#33</a>
        </li>
        <li>
          RequireThisCheck doesn't check methods. Thanks to krzyk.<a href="https://github.com/checkstyle/checkstyle/issues/41">#41</a>
        </li>
        <li>
          Document WhitespaceAround for-each property. Thanks to Andrew Gaul.<a href="https://github.com/checkstyle/checkstyle/pull/15">#15</a>
        </li>
        <li>
          Other corrections for typos. Thanks to Andrew Gaul.<a href="https://github.com/checkstyle/checkstyle/pull/16">#16</a>
        </li>
        <li>
          Remnants of DoubleCheckedLocking were removed. Thanks to Antonio Ospite.
        </li>
      </ul>
      <p>Notes:</p>
      <ul>
        <li>
          Improved the performance of FileText construction, which
          increased file loading times by up to 30%.
        </li>
        <li>
          Upgraded dependencies to guava-jdk5 14.0.1 and JUnit 4.11.
        </li>
        <li>
           partial fix for "Sonarqube found problems in Checkstyle" <a href="https://github.com/checkstyle/checkstyle/issues/46">#46</a>.
        </li>
        <li>
          Remnants of DoubleCheckedLocking were removed. Thanks to
          Antonio Ospite.
        </li>
      </ul>
    </section>

    <section name="Release 5.6">
      <p>New features:</p>
      <ul>
        <li>
          <a href="config_filters.html#SuppressionFilter">SuppressionFilter</a>
          now supports loading a configuration from a URL
          reference. Thanks to Stephen for patch #3485185.
        </li>
      </ul>
      <p>Bug fixes:</p>
      <ul>
        <li>
          Fixed bug in the grammar for an edge case (bug
          #1667137). Thanks to Lukas Platinsky for patch #3393810.
        </li>
        <li>
          <a href="config_coding.html#DeclarationOrder">DeclarationOrder</a>
          handles ignoreModifiers correctly (all fields should be before
          ctors and methods)(bug #3429775)
        </li>
        <li>
          <a href="config_coding.html#InnerAssignment">Inner assignment</a>
          is now allowed in try-with-resources (bug #3441097)
        </li>
        <li>
          Fixed bug in the grammar when builtin types are used in a
          generic declaration (bug #3553541).
        </li>
      </ul>
      <p>Notes:</p>
      <ul>
        <li>
          Removed the <code>DoubleCheckedLocking</code> check, as in Java 5
          (and beyond), using the <code>volatile</code> keyword addresses
          the issue. See
          <a href="http://jeremymanson.blogspot.com.au/2008/05/double-checked-locking.html">here</a>
          for more details.
        </li>
        <li>
          Added Turkish message translations. Thanks to poyrazus
          for patch #3460908.
        </li>
      </ul>
    </section>

    <section name="Release 5.5">
      <p>New features:</p>
      <ul>
        <li>
          Added Java 7 support to the grammar. Thanks to Dinesh
          Bolkensteyn for patch #3403265.
        </li>
      </ul>
      <p>Bug fixes:</p>
      <ul>
        <li>
          Fix parsing error <code>unexpected char: 0xFFFF</code> which was
          triggered when a comment line is on a line without newline character.
          Thanks to Evgeny Mandrikov for patch #3367782.
        </li>
        <li>
          Fixed <a href="config_imports.html#UnusedImports">UnusedImports</a>
          to consider @linkplain, @throws and @exception tags when the option
          <code>processJavadoc</code> is turned on.
        </li>
        <li>
          <a href="config_coding.html#RequireThis">RequireThis</a> now
          ignores static members (bug #1155921).
        </li>
        <li>
          <a href="config_coding.html#HiddenField">HiddenField</a> now
          treats setxYz() as a setter for xYz, and setXYz() as a setter for
          XYz property to comply JavaBeans specification (bug #3370946).
        </li>
        <li>
          Fixed parsing errors for Unicode escape sequences. Thanks to
          Dinesh Bolkensteyn for patch #3412812.
        </li>
        <li>
          ignoreEnhancedForColon property added to
          <a href="config_whitespace.html#WhitespaceAround">WhitespaceAround</a>.
          Thanks to Travis Schneeberger for patch #1921815 (bug #1649038).
        </li>
      </ul>
    </section>

    <section name="Release 5.4">
      <p>New features:</p>
      <ul>
        <li>
          Enhanced <a href="config_imports.html#UnusedImports">UnusedImports</a>
          to have the option <code>processJavadoc</code> to detect whether
          imports are used. Thanks to Lyle Hanson for patch #3267984.
        </li>
        <li>
          Enhanced <a href="config_coding.html#MagicNumber">MagicNumber</a>
          to support ignoring numbers in annotation declarations. Thanks to
          Julio Cesar Cabral for patch #3132984.
        </li>
        <li>
          Enhanced
          <a href="config_coding.html#EqualsAvoidNull">EqualsAvoidNull</a>
          to process <code>String.equalsIgnoreCase()</code>
          invocations (which can be suppressed).
        </li>
        <li>
          Enhanced
          <a href="config_coding.html#IllegalThrows">IllegalThrows</a>
          to support ignoring methods with specified names. Thanks to
          Amit Shah for patch #3115439.
        </li>
        <li>
          Enhanced
          <a href="config_modifier.html#RedundantModifier">RedundantModifier</a>
          to support detecting inner <code>interface</code> declarations that
          are declared as <code>static</code>. Raised in bug #3222810.
        </li>
        <li>
          Enhanced the <a href="anttask.html#Parameters">ANT task</a>,
          <a href="cmdline.html#Command_line_usage">Command Line</a> and
          <a href="config_filters.html#SuppressionFilter">Suppression Filter</a> to be
          able to load their configuration file from either the filesystem or
          the classpath as a resource. Thanks to Tracy Snell for patch #3307526.
        </li>
      </ul>
      <p>Bug fixes:</p>
      <ul>
        <li>
          Fix
          <a href="config_coding.html#MultipleVariableDeclarations">MultipleVariableDeclarations</a>
          to properly handle when multiple variable declarations are inside a
          for loop initializer. Thanks to Amit Shah for patch #3121071.
        </li>
        <li>
          Fix memory leak in FileContentsHolder. Thanks to Evgeny Mandrikov
          for patch #3323517.
        </li>
      </ul>
    </section>

    <section name="Release 5.3">
      <p>New features:</p>
      <ul>
        <li>
          Added <a href="config_misc.html#OuterTypeFilename">OuterTypeFilename</a>
          that checks that the outer type name and the file name match.
          For example, the class <code>Foo</code> must be in a file named
          <code>Foo.java</code>.
        </li>
        <li>
          Enhanced
          <a href="config_coding.html#PackageDeclaration">PackageDeclaration</a>
          to optionally check that the package name matches the name of the
          directory containing the file.
        </li>
        <li>
          Added <a href="config_coding.html#NestedForDepth">NestedForDepth</a>
          that restricts nested <code>for</code> blocks to a specified
          depth (default = 1). Thanks to Alexander Jesse for patch
          #1151673.
        </li>
        <li>
          Added <a href="config_sizes.html#MethodCount">MethodCount</a>
          that checks the number of methods declared in each type. This
          includes the number of each scope (<code>private</code>,
          <code>package</code>, <code>protected</code> and
          <code>public</code>) as well as an overall total. Thanks to
          Alexander Jesse for patch #1151669, which was the inspiration.
        </li>
        <li>
          Added <a href="config_coding.html#OneStatementPerLine">OneStatementPerLine</a>
          that checks there is only one statement per line. Thanks to
          Alexander Jesse for patch #1144994, which was the inspiration.
        </li>
        <li>
          Enhanced <a href="config_coding.html#MagicNumber">MagicNumber</a>
          to support the parameter <code>ignoreHashCodeMethod</code> to ignore
          magic numbers in <code>hashCode()</code> methods. Thanks to
          Daniel Solano Gómez for patch #3050788.
        </li>
        <li>
          Enhanced
          <a href="config_naming.html#AbstractClassName">AbstractClassName</a>
          to support checking that matching classes have the
          <code>abstract</code> modifier. Thanks to Danil Lopatin for
          patch #3043752.
        </li>
        <li>
          Enhanced the property types
          <a href="property_types.html#stringSet">stringSet</a> and
          <a href="property_types.html#intSet">intSet</a> to support being
          supplied multiple times to construct the equivalent of a comma
          separated list.
        </li>
        <li>
          Enhanced
          <a href="config_imports.html#AvoidStarImport">AvoidStarImport</a>
          to support the properties <code>allowClassImports</code> and
          <code>allowStaticMemberImports</code> for finer control over
          what is allowed. Thanks to Travis Schneeberger for patch
          #1939775.
        </li>
      </ul>
      <p>Bug fixes:</p>
      <ul>
        <li>
          Fix <a href="config_javadoc.html#JavadocMethod">JavadocMethod</a>
          checking of <code>@throws</code> tags for methods that throw multiple
          non-runtime exceptions. Thanks to Daan Kets for patch #3039869.
        </li>
        <li>
          Fix
          <a href="config_design.html#HideUtilityClassConstructor">HideUtilityClassConstructor</a>
          to handle empty and inner classes. Thanks to Roman Ivanov for
          patch #3045720.
        </li>
      </ul>
      <p>Notes:</p>
      <ul>
        <li>
          Changed the default value of the property <code>logLoadErrors</code>
          to be <code>true</code> for the checks
          RedundantThrows and
          <a href="config_javadoc.html#JavadocMethod">JavadocMethod</a> to
          ensure consistent behaviour.
        </li>
      </ul>
    </section>
    <section name="Release 5.2">
      <p>New features:</p>
      <ul>
        <li>
          Enhanced <a href="config_coding.html#DeclarationOrder">DeclarationOrder</a>
          to support properties to ignore constructors, methods and modifiers.
          Thanks to Steve McKay for patch #2953941.
        </li>
        <li>
          Enhanced <a href="config_javadoc.html#WriteTag">WriteTag</a>
          to support empty tags, and constructor declarations.
          Thanks to Rolf Wojtech for patch #2724894.
        </li>
        <li>
          Added <a
          href="config_design.html#InnerTypeLast">InnerTypeLast</a> to
          check nested (internal) classes/interfaces are declared at the
          bottom of the class after all method and field declarations.
          Thanks to Ruslan Dyachenko for patch #3027391.
        </li>
        <li>
          Enhanced <a href="config_imports.html#ImportOrder">ImportOrder</a>
          to support using regular expressions for defining groups.
          Thanks to Martin von Gagern for patch #2782118.
        </li>
      </ul>
      <p>Bug fixes:</p>
      <ul>
        <li>
          Fixed <a href="config_imports.html#ImportOrder">ImportOrder</a>
          to have the sort behaviour as in release 5.0. (bug #2952881).
          Thanks to Steve McKay for patch #2953936.
        </li>
        <li>
          Fixed <a href="config_javadoc.html#JavadocStyle">JavadocStyle</a>
          not handling package declarations that have annotations.
          (bug #2911363)
        </li>
      </ul>
      <p>Notes:</p>
      <ul>
        <li>
          Converted the build system to
          <a href="http://maven.apache.org/">Maven</a>. The directory structure
          has been maintained for now, rather than adopting Maven's
          <a href="http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html">
            standard directory layout
         </a>. This will change once Maven has been <i>proven</i>.
        </li>
        <li>
          The Maven <code>&lt;groupId&gt;</code> changed to be
          <code>com.puppycrawl.tools</code> (from <code>checkstyle</code>).
        </li>
        <li>
          Introduced
          <a href="apidocs/com/puppycrawl/tools/checkstyle/api/FileText.html">
              FileText
         </a>
          to provide more flexibility on how the contents of a file are
          represented. This allows for Checkers that wish to operate on
          a single character sequence instead of a list of lines.
          Thanks to Martin von Gagern for patch #2783226.
        </li>
        <li>
          Updated third party dependencies to the latest versions. See
          <a href="dependencies.html">Project Dependencies</a> for details.
        </li>
        <li>
          Made the method EmptyBlockCheck.hasText(DetailAST) as
          <code>protected</code> so that it is accessible to subclasses.
          Requested by Steve McKay.
        </li>
      </ul>
    </section>

    <section name="Release 5.1">
      <p>New features:</p>
      <ul>
        <li>
          Enhanced <a href="config_imports.html#ImportOrder">ImportOrder</a>
          check to support wildcard ('*') groups.
          Thanks to Steve McKay for patch #2891032.
        </li>
        <li>
          Enhanced the naming checks
          <a href="config_naming.html">ConstantName</a>,
          <a href="config_naming.html">MemberName</a>,
          <a href="config_naming.html">MethodName</a>
          and <a href="config_naming.html">StaticVariableName</a>
          to utilise the access control tuning features
          of AbstractAccessControlNameCheck. Thanks to Steve McKay for patch
          #2893581.
        </li>
        <li>
          Improve ConfigurationLoader to use a InputSource. Thanks to
          Martin von Gagern for patch #2782627.
        </li>
        <li>
          Enhanced the
          <a href="config_imports.html#ImportControl">ImportControl</a> check
          to support regular expressions. Thanks to lbaeumer for patch
          #2937442.
        </li>
      </ul>
      <p>Bug fixes:</p>
      <ul>
        <li>
           Corrected build errors on javadoc generation.
           Thanks to Martin von Gagern for providing a patch (patch #2782630).
        </li>
        <li>
           Corrected javadoc in TokenTypes class for UNARY_PLUS and UNARY_MINUS
           members (bug #2745145).
        </li>
        <li>
           Corrected broken link in WhiteSpaceAround documentation
           (bug #2745287).
        </li>
        <li>
           Corrected pad policy documentation for MethodParamPad (bug #2775402).
        </li>
        <li>
           Added correct license information for referenced source files
           (bug #2778850).
        </li>
        <li>
           Updated documentation for writing checks (bug #2783451).
        </li>
        <li>
          Report unused Javadoc tags with no trailing whitespace(bug #2506962).
          Thanks to Ashlesha Patil for patch #2781021.
        </li>
        <li>
          Enhanced <a href="config_javadoc.html#JavadocType">JavadocType</a>
          check to handle and report on unknown Javadoc tags.
          The property allowUnknownTags can be set to ignore errors.
          (bug #2882261)
        </li>
      </ul>
      <p>Notes:</p>
      <ul>
        <li>
          <i>Updated dependencies</i>: Updated Google collections to version
          1.0.
        </li>
        <li>
          <i>Updated documentation</i>: Added links for 3rd party tools.
        </li>
      </ul>
    </section>
    <section name="Release 5.0">
      <p>
        Release 5.0 is not 100% backwardly compatible with release
        4.4. Most likely you will need to update your configuration
        file.
      </p>
      <p>The following checks were added since release 4.4:</p>
      <ul>
        <li><a href="config_annotation.html#AnnotationUseStyle">AnnotationUseStyle</a></li>
        <li><a href="config_annotation.html#MissingDeprecated">MissingDeprecated</a></li>
        <li><a href="config_annotation.html#MissingOverride">MissingOverride</a></li>
        <li><a href="config_annotation.html#PackageAnnotation">PackageAnnotation</a></li>
        <li><a href="config_annotation.html#SuppressWarnings">SuppressWarnings</a></li>
        <li><a href="config_coding.html#EqualsAvoidNull">EqualsAvoidNull</a></li>
        <li><a href="config_coding.html#NoClone">NoClone</a></li>
        <li><a href="config_coding.html#NoFinalizer">NoFinalizer</a></li>
        <li><a href="config_imports.html#AvoidStaticImport">AvoidStaticImport</a></li>
        <li><a href="config_javadoc.html#JavadocPackage">JavadocPackage</a></li>
        <li><a href="config_naming.html#ClassTypeParameterName">ClassTypeParameterName</a></li>
        <li><a href="config_naming.html#MethodTypeParameterName">MethodTypeParameterName</a></li>
        <li><a href="config_regexp.html#RegexpMultiline">RegexpMultiline</a></li>
        <li><a href="config_regexp.html#RegexpSingleline">RegexpSingleline</a></li>
        <li><a href="config_regexp.html#RegexpSinglelineJava">RegexpSinglelineJava</a></li>
        <li><a href="config_sizes.html#OuterTypeNumber">OuterTypeNumber</a></li>
        <li><a href="config_whitespace.html#FileTabCharacter">FileTabCharacter</a></li>
        <li><a href="config_whitespace.html#GenericWhitespace">GenericWhitespace</a></li>
      </ul>
      <p>
        Since release 4.4 the following checks were changed from a Check
        to a FileSetCheck:
      </p>
      <ul>
        <li><a href="config_header.html#Header">Header</a></li>
        <li><a href="config_header.html#RegexpHeader">RegexpHeader</a></li>
        <li><a href="config_sizes.html#FileLength">FileLength</a></li>
      </ul>
      <p>
        This means that the checks above must not be declared under the
        TreeWalker module anymore. For example, the following Checkstyle
        4.4 configuration file:
      </p>
      <source>
&lt;module name=&quot;Checker&quot;&gt;
  &lt;module name=&quot;TreeWalker&quot;&gt;
    &lt;module name=&quot;Header&quot;&gt;
      &lt;property name=&quot;headerFile&quot; value=&quot;${checkstyle.header.file}&quot;/&gt;
    &lt;/module&gt;
  &lt;/module&gt;
&lt;/module&gt;
      </source>

      <p>becomes the following Checkstyle 5.0 configuration file:</p>
      <source>
&lt;module name=&quot;Checker&quot;&gt;
  &lt;module name=&quot;Header&quot;&gt;
    &lt;property name=&quot;headerFile&quot; value=&quot;${checkstyle.header.file}&quot;/&gt;
    &lt;property name=&quot;fileExtensions&quot; value=&quot;java&quot;/&gt;
  &lt;/module&gt;
&lt;/module&gt;
      </source>
      <p>The following checks were removed since release 4.4:</p>
      <ul>
        <li>
          GenericIllegalRegexpCheck - replaced with <a
          href="config_regexp.html#RegexpMultiline">RegexpMultiline</a>
          and <a
          href="config_regexp.html#RegexpSingleline">RegexpSingleline</a>
          and <a
          href="config_regexp.html#RegexpSinglelineJava">RegexpSinglelineJava</a>.
        </li>
        <li>
          RequiredRegexpCheck - replaced with <a
          href="config_regexp.html#RegexpMultiline">RegexpMultiline</a>
          and <a
          href="config_regexp.html#RegexpSingleline">RegexpSingleline</a>
          and <a
          href="config_regexp.html#RegexpSinglelineJava">RegexpSinglelineJava</a>.
        </li>
        <li>
          CrossLanguageRegexpHeaderCheck - replaced with
          <a href="config_header.html#RegexpHeader">RegexpHeader</a>.
        </li>
        <li>
          PackageHtmlCheck - replaced with
          <a href="config_javadoc.html#JavadocPackage">JavadocPackage</a>.
        </li>
        <li>All the J2EE checks.</li>
      </ul>
      <p>New Features since release 5.0 Beta 2:</p>
      <ul>
        <li>
          New Annotation checks
          <a href="config_annotation.html#AnnotationUseStyle">AnnotationUseStyle</a>
          <a href="config_annotation.html#MissingDeprecated">MissingDeprecated</a>
          <a href="config_annotation.html#MissingOverride">MissingOverride</a>
          <a href="config_annotation.html#PackageAnnotation">PackageAnnotation</a>
          <a href="config_annotation.html#SuppressWarnings">SuppressWarnings</a>
          . Big thanks to Travis Schneeberger who is now a committer on the
          project.
        </li>
      </ul>
      <p>Fixed Bugs since release 5.0 Beta 2:</p>
      <ul>
        <li>
          <a href="config_coding.html#RequireThis">RequireThis</a>
          reported a violation when using an annotation
          with a member name that is the same as a member name in the enclosing
          class the annotation was used in (bug #2123003).
        </li>
      </ul>
    </section>

    <section name="Release 5.0 Beta 2">
      <p>
        Major change to FileSetCheck architecture to move the
        functionality of open/reporting of files into Checker. The
        advantages are:
      </p>
      <ul>
        <li>
          Reduces the logic required in each implementation of FileSetCheck
        </li>
        <li>
          Reduces, but not eliminates, the number of times a file is
          reported as being audited.
        </li>
        <li>
          Reduces the amount of times a file needs to be read in from
          the file system.
        </li>
      </ul>
      <p>
        The motivation for this change is to convert checks that are
        language neutral in nature, to be based on FileSetCheck. This
        allows the checks to be used for other languages apart from
        Java. As a practical example, it is possible to ensure that JSP
        and XML files do not contain tabs.
      </p>
      <p>New Features:</p>
      <ul>
        <li>
          Added the option <i>charset</i> to the
          <a href="config_header.html">header checks</a> to allow
          controlling the encoding of the header file (rfe 1952641).
        </li>
        <li>
          New check
          <a href="config_sizes.html#OuterTypeNumber">OuterTypeNumber</a>
          for enforcing the maximum number of outer types per file. Inspired
          by patch #1145023 from Alexander Jesse.
        </li>
        <li>
          Added the option <i>sumTokenCounts</i> to the <a
          href="config_misc.html#DescendantToken">DescendantToken</a> to
          allow for even more powerful checks. For example, detect
          statements like <code>this == null</code>.
        </li>
        <li>
          Add new options to the <a
          href="config_imports.html#ImportOrder">ImportOrderCheck</a>
          to make it more flexible. Thanks to David Didier for providing
          patch #1854213.
        </li>
        <li>
          New check <a
          href="config_whitespace.html#FileTabCharacter">FileTabCharacter</a>
          for ensuring that any files does not contain a tab
          character. It replaces <i>TabCharacterCheck</i> which was
          restricted to Java files.
        </li>
        <li>
          Changed <a href="config_sizes.html#FileLength">FileLength</a>
          check to be a FileSetCheck.
        </li>
        <li>
          Changed <a
          href="config_header.html#RegexpHeader">RegexpHeader</a> and <a
          href="config_header.html#Header">Header</a> to be a
          FileSetCheck. Removed CrossLanguageRegexpHeader as a result.
        </li>
        <li>
          Enhanced <a
          href="config_javadoc.html#JavadocStyle">JavadocStyle</a> to
          check for allowed HTML tags. Thanks to Nicolas Dordet for
          providing patch #2214251.
        </li>
        <li>
          Enhanced <a
          href="config_javadoc.html#JavadocMethod">JavadocMethod</a> to
          be more restrictive on where <code>{@inheritDoc}</code> can be
          used. Also enhanced <a
          href="config_javadoc.html#JavadocPackage">JavadocPackage</a>
          to ensure a <code>package-info.java</code> file contains a
          comment. Thanks to Travis Schneeberger for providing patch
          #2294029.
        </li>
        <li>
          Added the <a href="config.html#Filters">SuppressWithNearbyCommentFilter</a>
          filter that uses nearby comments to suppress audit events. Thanks
          to Mick Killianey for providing patch #2354424.
        </li>
        <li>
          Added the new checks <a
          href="config_regexp.html#RegexpMultiline">RegexpMultiline</a>
          <a
          href="config_regexp.html#RegexpSingleline">RegexpSingleline</a>
          <a
          href="config_regexp.html#RegexpSinglelineJava">RegexpSinglelineJava</a>.
        </li>
      </ul>

      <p>Fixed Bugs:</p>
      <ul>
        <li>
          The NCSS complexity checker reported an incorrect fileMax value
          (bug #2161419).
        </li>

        <li>
          Checkstyle command-line no longer reports a usage error if the
          user specifies a directory with the <i>-r</i> option that does
          not contain any files. Thanks to Florian for patch #2151706.
        </li>
        <li>
          Fixed the <a href="config_blocks.html#LeftCurly">LeftCurly</a> check
          to ignore leading annotations. Thanks to Tim Carpenter for patch
          #2506439.
        </li>
      </ul>
    </section>

    <section name="Release 5.0 Beta 1">
      <p>
        The 5.x release is developed using Java 5 and requires a Java 5
        platform to run. If you need run a Java 1.4 or earlier, then use
        a Checkstyle 4.x release. As such, features for earlier versions
        of Java will be dropped over time.
      </p>

      <p>New Features:</p>
      <ul>
        <li>
          New check <a
          href="config_coding.html#NoFinalizer">NoFinalizer</a>
          for ensuring that a class does not define a finalize() method.
          Thanks to Feng Qian and Steve McKay for providing patch #1892273.
        </li>
        <li>
          New check <a
          href="config_whitespace.html#GenericWhitespace">GenericWhitespace</a>
          for ensuring the whitespace around the Generic tokens &lt; and
          &gt; are correct to the <i>typical</i> convention.
        </li>
        <li>
          New check <a
          href="config_javadoc.html#JavadocPackage">JavadocPackage</a>
          for ensuring that each Java package has a Javadoc
          comment. Replaces the check PackageHtml which has been
          removed. (Bug 1228207)
        </li>
        <li>
          Enhanced the <a
          href="config_javadoc.html#JavadocMethod">JavadocMethod</a>
          check to not require Javadoc if the method is tagged with the
          <code>@Override</code> annotation.
        </li>
        <li>
          New check <a
          href="config_coding.html#EqualsAvoidNull">EqualsAvoidNull</a>
          for ensuring that String literals is on the left side of an
          <code>equals()</code> comparison.  Thanks to
          Travis Schneeberger for providing patch #1895152.
        </li>
        <li>
          Overhaul of how the package names to be prefixed to module
          names are determined. See the <a
          href="config.html#Packages">documentation</a> for full
          details. This has meant removing a supported parameter to the
          ANT task and the Command line. Thanks to Lars Koedderitzsch
          for patch #1914806.
        </li>
        <li>
          New check <a
          href="config_imports.html#AvoidStaticImport">AvoidStaticImport</a>
          for ensuring there are no static import statements. Thanks to
          Travis Schneeberger for providing patch #1940611.
        </li>
        <li>
          Enhanced the <a href="config_naming.html">MethodName</a> check
          to detect when a method name is the same as the residing class
          name. Thanks to Travis Schneeberger for providing patch
          #1892364.
        </li>
        <li>
          New check <a href="config_coding.html#NoClone">NoClone</a> for
          ensuring a class does not override the <code>clone</code> method from
          the <code>Object</code> class. Thanks to Travis
          Schneeberger for providing patch #1947417.
        </li>
        <li>
          New checks <a href="config_naming.html#ClassTypeParameterName">
          ClassTypeParameterName</a> and
          <a href="config_naming.html#MethodTypeParameterName">
          MethodTypeParameterName</a>
          for type name formats. Thanks to Travis Schneeberger for providing
          patch #1956561.
        </li>
        <li>
          Overhaul of how <code>AbstractOptionCheck</code> works.
          It now requires that the option type is a Java 5 Enum and hence the
          <code>AbstractOption</code> class has been removed.
        </li>
        <li>
          Provide support in the module configuration to allow for custom
          messages that override the default message. This allows for
          messages to be easily overridden.
          See <a href="config.html#Custom_messages">Custom Messages</a> for
          more information. Thanks to Lars Koedderitzsch for providing patch
          #1917420.
        </li>
      </ul>

      <p>Fixed Bugs:</p>
      <ul>
        <li>
          Stop the WhitespaceAroundCheck from checking the Generic
          tokens &lt; and &gt;.
        </li>
        <li>
          Fixed bug with incorrectly flagging an import as being
          unused. Bug 1860424, but as a consequence reintroduced bug
          1098126. It is a catch-22 that both bugs can be solved with
          the current architecture.
        </li>
        <li>
          Fixed bug #1649020 where generic parameters for methods
          recognized as HTML tags. Used patch #1936389 from Travis
          Schneeberger.
        </li>
      </ul>

      <p>Notes:</p>
      <ul>
        <li>
          <i>Retired</i> the J2EE Checks. If you are using Java 5, then you
          really should be using
          <a href="http://www.oracle.com/technetwork/java/javaee/overview/index.html">Java EE</a>. If you need
          these checks, then use a Checkstyle 4.x release.
        </li>
        <li>
          Applied patch #1892253 to expand access controls to other naming
          checks.
        </li>
        <li>
          Applied patch #1993103 to make the format of end of sentence
          configurable in the
          <a href="config_javadoc.html#JavadocStyle">JavadocStyle</a>
          check.
        </li>
        <li>
          <i>Updated dependencies</i>: Removed commons-collections; added Google collections
          (google-collect-snapshot-20080321.jar); upgraded commons-cli to version 1.1.
        </li>
        <li>
          Changed the classes <code>Scope</code> and
          <code>SeverityLevel</code> to be based on the Java 5
          <code>Enum</code> class. Used patch #2004776 from Travis
          Schneeberger.
        </li>
      </ul>
    </section>

    <section name="Release 4.4">
      <p>Fixed Bugs:</p>

      <ul>
        <li>
          checkstyle-all.jar contained some classes from jakarta
          commons-collections twice. (bug 1630361)
        </li>
        <li>
          Multiple string literal check now ignores annotations by
          default (bug 1560940).  It is possible to retain the old
          behaviour by setting the new check property
          ignoreOccurrenceContext to an empty value.
        </li>
        <li>
          The calculated value of NPath complexity was subject to
          integer overflow, so complex code was not always flagged (bug
          1654769).
        </li>
        <li>
          Fixed misleading documentation for BooleanExpressionComplexity
          check (bug 1579227).
        </li>
        <li>
          Fixed Java parser error for array brackets in wildcard generic
          types (bug 1394014).  Thanks to Paul Constantinides for
          submitting the fix (patch 1422247).
        </li>
        <li>
          Fixed false alarm in HideUtilityClassConstructor check when class
          has only static methods but contains non static fields (bug 1762702).
        </li>
      </ul>

      <p>New features:</p>

      <ul>
        <li>
          Allow to control the operator token types in
          BooleanExpressionComplexity check (in response to bug
          1579227).
        </li>
        <li>
          Added an entry for <tt>Checkstyle-IDEA</tt> on the home page.
        </li>
        <li>
          Set the <tt>failureProperty</tt> with a meaningful message
          (feature request 1725475).
        </li>
        <li>
          Add a URL option for ImportControl check. Thanks to Benjamin
          Lerman for the patch 1724683.
        </li>
        <li>
          Moved source control over to Subversion.
        </li>
      </ul>
    </section>

    <section name="Release 4.3">
      <p>Fixed Bugs:</p>

      <ul>
        <li>
          The StrictDuplicateCode check didn't report correct results when
          multiple duplicate code regions were overlapping. (bug 1564465)
        </li>
        <li>
          Fixed NPE in FallThrough check (bug 1472228)
        </li>
        <li>
          Fixed typo in Command Line example (bug 1464595)
        </li>
        <li>
          RegexpHeader check now correctly report problematic line in
          file with regexps for header (bug 1455575)
        </li>
        <li>
          Fixed small problem in usage checks (patch 1498920).  Thanks
          to Chris Povirk (cpovirk) for submitting the patch.
        </li>
        <li>
          Fixed incorrect French translation (bug 1611403). Thanks to
          Fabien Bergeret for providing the correct value.
        </li>
      </ul>

      <p>New features:</p>

      <ul>
        <li>
          Major performance improvements in the StrictDuplicateCode check,
          especially for large projects. Also, false alarms are no longer
          possible.
        </li>
        <li>
          New CrossLanguageRegexpHeader check that allows checking file headers
          for other languages than Java.
        </li>
        <li>
          Applied patch 1586411 from Dennis Lundberg (dennislundberg) to
          add Maven POM files to the build.
        </li>
      </ul>
    </section>

    <section name="Release 4.2">
      <p>New features:</p>

      <ul>
        <li>
          NoWhitespaceAfter check now accepts TYPECAST token to check is
          there is no whitespace after typecast. (rfe 1248106).
        </li>
        <li>
          IllegalType can be configured to accept some abstract classes
          which matches to regexp of illegal type names (property
          legalAbstractClassNames, rfe 953266).  Thanks to Paul Guyot
          (pguyot) for submitting patch.
        </li>
        <li>
          TrailingComment now can be configured to accept some trailing
          comments (such as NOI18N) (property legalComment, rfe
          1385344).
        </li>
        <li>
          Added WriteTag check which outputs a JavaDoc tag as
          information (patch 902110) Thanks to Daniel Grenner (dgrenner)
          for contribution.
        </li>
        <li>
          Support for suppressing audit events based on an identifier
          that is assigned to individual modules/checks. This allows for
          suppressing at a finer level than the check class
          name. See <a href="config.html#Filters">SuppressionFilter</a>
          documentation for more.
        </li>

        <li>
          Added the style sheet checkstyle-frames.xsl, thanks to Paul
          King. (Bug 1385095).
        </li>

        <li>
          Applied patch (1505376) by Clint Stotesbery to support the
          suppressLoadErrors property for AbstractTypeAwareCheck (RFE
          1491630).
        </li>

        <li>
          Upgraded to ANTLR 2.7.6.
        </li>

        <li>
          GUI now displays a TextArea with the contents of the file
          parsed. Based on patch from sermojohn (RFE 1499180).
        </li>
      </ul>

      <p>Fixed Bugs:</p>

      <ul>
        <li>
          First attempt to fix 1000092 (RightCurlyCheck misbehaves for
          LIT_CATCH).  The check has been rewritten to check rcurly
          after finally and else.  Current behavior is incompatible
          with previous one.
        </li>
        <li>
          Fixed problem in type aware checks with loading
          inner-classes which were referenced as
          &lt;outer_class_name&gt;.&lt;inner_class_name&gt; (bug
          1379666, modules JavadocMethod and RedundantThrows).
        </li>
        <li>
          Fix UTF-8 encoding error in XMLLogger. (bug 1369589).
        </li>
        <li>
          The new property logLoadErrors of the JavaDocMethod check
          now allows controlling the behaviour when checkstyle cannot
          load a class that is referenced in javadoc (bug 1422462).
        </li>
        <li>
          Tighten up the allowed use of the {@inheritDoc} tag.
        </li>
        <li>
          Stop creating duplicate regular expression patterns.
        </li>
      </ul>
    </section>

    <section name="Release 4.1">
      <p>Fixed Bugs:</p>

      <ul>
        <li>
          Documentation for JavadocMethod check corrected to indicate
          that after fix for 1290379 javadoc which contains only @see
          tag is not valid any more (bug 1369615)
        </li>
        <li>
          Fixed StackOverflowError in GenericIllegalRegexp check
          which may occur if ignoreComments is true and there is an
          illegal match in comment at the end of line. (bug 1371588)
        </li>
        <li>
          InnerAssignment now ignores assignments in annotations. (bug
          1369425)
        </li>
        <li>
          Applied patch from Ralf (rakus) to remove javadoc's
          complaints. (patch 1352862)
        </li>
        <li>
          Fixed StringIndexOutOfBoundsException which MethodParamPad may
          throws if someone tries to create object of generic class
          (with any params) (bug 1374792).
        </li>
        <li>
          Added information to the manifest file. (bug 1380322).
        </li>
      </ul>
    </section>

    <section name="Release 4.0">
      <p>New features:</p>

      <ul>
        <li>
          Applied patch 1344344 by sjq to provide the new
          <a href="http://checkstyle.sourceforge.net/config_misc.html#Regexp">Regexp</a> check that can
          provide the functionality of the following
          checks: <a
          href="config_header.html#RegexpHeader">RegexpHeader</a>
        </li>
        <li>
          Added support for property <i>ignoreStringsRegexp</i> to
          <i>MultipleStringLiterals</i> check. Patch 1254918 from taab.
        </li>
        <li>
          Added Spanish translation of messages. Thanks to Ricardo Mones
          (patch 1250329).
        </li>
        <li>
          Made the Class Loader used to load infrastructure classes and
          resources come from <code>Thread.currentThread()
          .getContextClassLoader()</code>. Done as a result of patch
          1273903 from Lars Koedderitzsch.
        </li>
        <li>
          Added patch The LocalizedMessage already gets the Class of the
          check that triggers the message (to output the name of the
          check). Instead of storing just the name of this class, store
          the class itself. With this the name can be retrieved and the
          classloader of this class can be used to load the correct
          resource bundle. Patch 1309516 from Ralf (rakus).
        </li>
        <li>
          FallThrough check now can check last case group (property
          checkLastCaseGroup, bug 1245942).
        </li>
        <li>
          Applied patch 906531 (WhitespaceAround allows empty
          method/ctor bodies.) Thanks to Eric Roe (module
          WhitespaceAround, properties allowEmptyCtors and
          allowEmptyMethods).
        </li>
        <li>
          FallThrough check can be configured to ignore fall-throughs
          if there is a relief comment, thanks to Ralf (aka rakus)
          for a great patch (rfe 1345691, patch 1348873)
        </li>
      </ul>

      <p>Fixed Bugs:</p>

      <ul>
        <li>
          Fixed encoding problems when parsing XML because was using
          FileReader instead of FileInputStream. Bug 1320132.
        </li>
        <li>
          The InnerAssignment check didn't find all instances of inner
          assignments. Bug 1195047.
        </li>
        <li>
          Fixed typo in grammar (bug 1335088)
        </li>
        <li>
          Fixed ParenPad check problem which was caused by one of
          recent grammar change (one which was about
          (SUPER_)CTOR_CALL) (bug 1322879).
        </li>
        <li>
          Fixed bug in logic JavadocStyle check uses to get
          main-section of javadoc (bug 1291847).
        </li>
        <li>
          Three more fixes for Indentation check (bugs 1251988,
          1260079, 1336737).
        </li>
        <li>
          Fixed problem in Comment.hasIntersectionWithComment() (patch
          1339523 from Richard Schulte).
        </li>
        <li>
          Now javadoc method should not contain only @see tag (but
          could contain only {@ingeritDoc} tag) (bug 1290379, module
          JavadocMethod)
        </li>
      </ul>

      <p>Other improvements:</p>

      <ul>
        <li>
          Applied patch 1292684 from Maarten Coene to fix the generated
          HTML reports that are not correct if you include the
          TreeWalker and the StrictDuplicateCode modules in the same
          configuration. Patch effects checkstyle-noframes-sorted.xsl.
        </li>
        <li>
          Applied patch 1340300 from David Dodini to update bcel
          checks to be compilable with current Checkstyle's API.
        </li>
        <li>
          Added antlib.xml to support new cool feature of Ant.
        </li>
        <li>
          Applied patch 1386388 to enable ConfigurationLoader to load
          from InputStream.
        </li>
      </ul>

    </section>

    <section name="Release 4.0 Beta 6">
      <p>New features:</p>

      <ul>
        <li>One more change for grammar: now CTOR_CALL and
        SUPER_CTOR_CALL nodes represents "this" and "super" keywords
        from these statements.</li>
      </ul>

      <p>Fixed Bugs:</p>

      <ul>
        <li>Removed all reference to the usage checks (bug
        1256662).</li>

        <li>RequireThis now handles inner enums better (bug 1257599)</li>

        <li>Fixed package name for modifiers checks in documentation
        (bug 1275988)</li>

        <li>MagicNumber allows use numeric constants in enum constant
        definition (bug 1284682)</li>

        <li>Fixed i18n problems in ArrayTypeStyle,
        HideUtilityClassConstructor and AvoidInlineConditionals(bug
        1262825)</li>

      </ul>

      <p>Other improvements:</p>

      <ul>
        <li>TBD</li>
      </ul>

    </section>

    <section name="Release 4.0 Beta 5">
      <p>New features:</p>

      <ul>
        <li>Added useFile property of ant task (patch 916971)</li>

        <li>
          Documented new tokens which is checked by WhitespaceAround
          (bug 1233425)
        </li>

        <li>
          Added patch (ID 1193251) to suppress processing of checks with
          'ignore' severity. From Lars Koedderitzsch.
        </li>

        <li>
          Added IllegalThrowsCheck to detect illegal throw declarations.
        </li>

        <li>
          Added ImportControlCheck to controls what packages can be
          imported in each package. Useful for ensuring that application
          layering is not violated.
        </li>
      </ul>

      <p>Fixed Bugs:</p>

      <ul>
        <li>HiddenField can be configured to ignore parameters of
        abstract methods (property ignoreAbstractMethods, bug
        1084512)</li>

        <li>Applied patch 1079192 (thanks to Dave Brosius)</li>

        <li>Two more bugs fixed in type aware checks (RedundantThrows
        and JavadocMethod checks) (bug 1168408 and 1220726)</li>

        <li>Applied patch 1045127 (thanks to Paul Constantinides)</li>

        <li>TypecastParenPad and ParenPad are now smarter in detecting
        if paren is part of typecast (bug 1217798)</li>

        <li>LocalFinalVariable now also checks catch parameters (bug
        1223290)</li>

        <li>Applied patch 1061458, hope this helps users who use
        checkstyle with JRockit (thank to Ville Skytta for
        contribution)</li>

        <li>Changed way how to IndentationCheck handles fields in
        classes and operator new (bug 1193848, 1232822)</li>

        <li>Fixed problem with cache file (patch 1012389) thanks to
        Dave Wood.</li>

        <li>Fixed example for FinalLocalVariable snf the check itself
        (bug 1241722)</li>

        <li>Fixed implementation of DetailAST so getPreviousSibling()
        works for all nodes in AST tree (bug 1244994)</li>

        <li>Now type-aware check know more about generics (bug 1249707,
        modules: RedundantThrows and JavadocMethodCheck)</li>

      </ul>

      <p>Other improvements:</p>

      <ul>
        <li>
          Introduced the EMMA code coverage tool. A report is produced
          as a result of running the unit tests.
        </li>

        <li>
          Retired the usage checks to the contrib directory. If there is
          interest in the future they may be promoted back into the
          optional set of checks.
        </li>
      </ul>
    </section>

    <section name="Release 4.0 Beta 4">
      <p>Fixed Bugs:</p>

      <ul>
        <li>Fix critical bug in the grammar (bug 1216844)</li>
      </ul>
    </section>

    <section name="Release 4.0 Beta 3">
      <p>Fixed Bugs:</p>

      <ul>
          <li>DesignForExtension check skips enums now (they are final
          :). (bug# 1194470)</li>

          <li>Indentation check now works better with enums and
          for-each statements (bugs 1193850 and 1193855)</li>

          <li>Corrected calculation of Cyclomatic complexity metric
          (bug 1203536, module CyclomaticComplexity)</li>

          <li>SuppressionCommentFilter now silently does nothing if
          there is no FileContentsHolder (bug 1183749)</li>

          <li>Java Parser now understands Java 5 hex float syntax
          (bug 1195818)</li>
      </ul>

      <p>Other improvements:</p>

      <ul>
          <li>Improved performance of reading Java files
          (patch 1214386, contributed by Lars Koedderitzsch)</li>

      </ul>

      <p>Dependencies:</p>

      <ul>
          <li>Since Checkstyle now requires Java 1.4, it does not need
          Jakarta Regexp library any more and uses java.util.regex
          package from J2SE instead. The regular expression specifications
          of these libraries use a slightly different syntax in some
          corner cases, e.g. for posix character classes. We expect that
          these differences are not relevant for the majority of checkstyle
          users, but please check your configuration.</li>

      </ul>

    </section>

    <section name="Release 4.0 Beta 2">

      <p>Dependencies:</p>

      <ul>
          <li>Checkstyle now requires Java 1.4, running Checkstyle inside
          a Java 1.3 VM is no longer supported.</li>

      </ul>

      <p>Fixed Bugs:</p>

      <ul>
          <li>The Ant task now always prints a summary line like
          'Running Checkstyle 4.0 on 339 files' (bug 1099573).</li>

          <li>Added missing documentation for the fileExtensions
          property of the NewlineAtEndOfFile check (bug 1174751).</li>

          <li>Fixed bug #1098126 in UnusedImport check.</li>

          <li>Fixed bug #1185722 (DeclarationCollector.leaveToken unbalanced
          with visitToken)</li>

          <li>Fixed NPE in AbstractUsageCheck when we process an empty
          file (bug 1165855)</li>

      </ul>

    </section>

    <section name="Release 4.0 Beta 1">

      <p>New features:</p>

      <ul>

        <li>Introduced preliminary support (beta quality) for the Java 5
        language. Previous versions of Java are still supported so this
        release should be a drop in replacement for the 3.5 release. The
        reason for the beta release is to solicit feedback on the Java 5
        support.</li>

        <li>Documentation contains an alphabetically sorted
            list of all available checks.</li>

        <li>Checker.getBasedir() is public now (rfe 1023004)</li>

        <li>JavadocMethod check now can be configured to skip missed javadoc
        (rfe 1060634)</li>

        <li>Some clarifications on scope property of javadoc checks added
        (rfe 1009201)</li>

        <li>UnusedPrivateMethod check now can be configured to ignore
        serialization-related methods (readObject(), writeObject(),
        readResolve() and writeReplace()) (rfe 1036387)</li>

        <li>Added support for the property
        <code>allowMissingPropertyJavadoc </code> on the <a
        href="config_javadoc.html#JavadocMethod">JavadocMethod</a>
        check.</li>

      </ul>

      <p>Resolved bugs: </p>

      <ul>

        <li>Fix bug with suppression filtering. (bug 1080343).</li>

        <li>Improved French message translations
        (patch 1097980 by Olivier Parent).</li>

        <li>Fixed typo in SuppressionCommentFilter which caused bug 1084654</li>

        <li>Fixed 1048226 (Runtime problems of Checks are logged to checkstyle
        audit), now checkstyle will fail if it cannot load class for exception
        from throws clause of javadoc (modules RedundantThrows and
        JavadocMethod)</li>

        <li>Fixed French translation, patch from Paul Guyot (bugs 1090381 and
        1100946)</li>

        <li>Fixed problem with exception's javadoc checks(bug 1100193, module
        JavadocMethod)</li>

        <li>Fixed two more problems in Indentation check (bug 1089128)</li>

        <li>ConstantName check now exclude serialPersistentFields from the
        check (bug 1097285)</li>

        <li>One more problem with SuppressionCommentFilter fixed (bug
        1061459)</li>

        <li>format property of IllegalType check documented (bug 1047449)</li>

        <li>ModifiedControlVariable check changed to work with for-each
        correctly (1101851)</li>

        <li>Annotations and enums are classes too and should be treated so by
        ClassFanOutComplexity checks (bug 1109205)</li>

        <li>Two more annotation-related problems (module Indentation, bug
        1109214 and module UnnecessaryParentheses, bug 1109238)</li>

      </ul>

      <p>Other changes:</p>

      <ul>

        <li>Added new check packages and moved check implementations.
            Users who maintain their own packagelist must adapt to these changes.</li>

      </ul>

    </section>

    <section name="Release 3.5">

      <p>New features:</p>
      <ul>

        <li>Added attributes maxErrors and maxWarnings to Ant task to allow
        finetuning of failure behaviour (request 783538).</li>

        <li>Added check that checks for a required regexp, contributed by
        Daniel Grenner (module RequiredRegexp, request 606115, patch
        902189).</li>

        <li>Added check for the ncss metric. (module JavaNCSS, patch
        920820)</li>

        <li>Added check that checks for multiple string literals, contributed
        by Daniel Grenner (module MultipleStringLiterals, patch 929882).</li>

        <li>Added check that checks for a modified control variable in a for loop,
        contributed by Daniel Grenner
        (module ModifiedControlVariable, patch 927680).</li>

        <li>Added example of how to configure the XML parser factory for
        Checkstyle, and how to support XInclude processing
        (contrib/examples/XInclude, request 905169).</li>

        <li>Added example of an ant build file and stylesheet for generation
        of an HTML error report with links to source code.
        </li>

        <li>Added filter that suppresses audit events according to source file
        comments, contributed by Mike McMahon (module
        SuppressionCommentFilter, requests 732196 and 931327).</li>

        <li>Better information for unexpected char (request 666188).</li>

        <li>Added charset property to TreeWalker and StrictDuplicateCode check
        (addresses bug 975346).  </li>

        <li>French message translations, contributed by Pierre Dittgen
        (request 978916).</li>

        <li>DataAbstractionCoupling reports coupling classes, contributed by
        Benoit Xhenseval (request 990055).</li>

        <li>FinalLocalVariable ignores parameters of interface methods and
        abstract methods.  (request 993922 and bug 1002849).</li>

        <li>Header and RegexpHeader checks allow header specification directly
        in the checkstyle configuration file, not only in an external file
        (request 1041590).</li>

        <li>com.puppycrawl.tools.checkstyle.gui.Main accepts an optional file
        name in the command line.  (request 1000102).</li>

      </ul>

      <p>Resolved bugs: </p>

      <ul>

        <li>False alarms from UnusedPrivateMethodCheck for anonymous inner
        class parameter.  (bug 950548).</li>

        <li>Fixed bug in handling imports in RequireThis(bug 952508)</li>

        <li>JUnitTestCaseCheck erroneously mentions tearDown instead of
        setUp. (bug 955925, patch by Paul Guyot)</li>

        <li>JavadocTypeCheck does not find a tag on the first comment
        line. (patch 959995, patch by Michael Tamm)</li>

        <li>StrictDuplicateCodeCheck did not find duplicates within the same
        file.</li>

        <li>Unexpected char (bug 975346).</li>

        <li>MagicNumber check overly aggressive (reported on user mailing
        list).</li>

        <li>Documentation error for naming convention checks (bug
        987503).</li>

        <li>FinalParametersCheck checks parameters of abstract methods. (bug
        1002849).</li>

        <li>Bug in ClassResolver where it was mismatching imports - example
        would match SecurityDataException when looking for DataException. Bug
        was visible in RedundantThrows check (no known bug).</li>

        <li>Fixed HiddenFieldCheck to correctly handle static inner classes
        (bug 1032426).</li>

        <li>Fixed misspelling of variable (patch 1032618 contributed by Paul
        Wagland).</li>

        <li>Fixed ClassResolver to handle exceptions which are inner for
        current class (bug 945149).</li>

        <li>Fixed ClassResolver to handle fully-qualified inner classes (bug
        1037667).</li>

        <li>Fixed 1033166 (Indent module specifies two indent levels for one
        line)</li>

        <li>Fixed false alarms in RequireThis check (bug 952508)</li>

      </ul>

      <p>API changes:</p>
      <ul>

          <li>Added new class SeverityLevelCounter.</li>

      </ul>
    </section>

    <section name="Release 3.4">

      <p>
        New features:
      </p>

      <ul>

        <li>Added a 'version' attribute to the 'checkstyle' element in the XML
        output document (request 853128).</li>

        <li>FinalParameter can be applied to catch blocks (request
        848820).</li>

        <li>Improved German translation, contributed by Oliver Fischer (patch
        862911).</li>

        <li>Added stylesheet to translate XML output into comma separated
        values format (contrib/checkstyle-csv.xsl, request 764153).</li>

        <li>Added BooleanExpressionComplexity check from Simon Harris (request
        750760)</li>

        <li>Added ClassDataAbstractionCoupling check
        from Simon Harris (request 750758)</li>

        <li>Added ClassFanOutComplexity check from
        Simon Harris (request 750759)</li>

        <li>Added NPathComplexity check from Simon
        Harris (request 750757)</li>

        <li>Added several more log() methods to
        AbstractViolationReporter. (request 843551)</li>

        <li>Added check to ensure that default is a last
        label in the switch statement.(module DefaultComesLast,
        request 754486 )</li>

        <li>Added check to ensure that all classes
        define constructor. (module MissingCtor, request
        696129)</li>

        <li>Added check to warn on fall-through in case
        with code not followed by break. (module FallThrough,
        request 754438)</li>

        <li>Added check to ensure that every variable
        is declared in its own statement and on its own line (module
        MultipleVariableDeclarations, requests 639233, 753858,
        844705)</li>

        <li>Added check to ensure that references to
        non-static fields and methods should be qualified.
        (module RequireThis, contributed by Stephen Bloch, requests
        755550, 696295).</li>

        <li>Added multiLines property to regexpCheck
        (request 597676)</li>

        <li>Added check for the padding between the
        identifier of a method definition, constructor definition,
        method call, or constructor invocation;
        and the left parenthesis of the parameter list.  (module
        MethodParamPad, request 843254)</li>

        <li>Added check to forbid endline
        comments. (module TrailingComment, request 744970)</li>

        <li>Added applyTo(Public|Protected|Package|Private)
        properties to check MemberName. (request 695935)</li>

        <li>Added check to verify padding in empty for loop
        initializers. (module EmptyForInitializerPad, part of fix for
        bug 895072)</li>

        <li>Added checkEmptyJavadoc property to JavadocStyle
        check, contributed by Daniel Grenner (request 849056, patch 903597)
        </li>

        <li>Added format property to ReturnCount check
        to configure ignored method names (request 904437)</li>

        <li>Added attribute 'default' to configuration
        &lt;property&gt; tags, improves usability for centralized
        configuration files. This change triggered a new version of the
        configuration DTD. Your old configuration files will still work,
        but if you want to use the new 'default' attribute you need to
        upgrade your configuration file to DTD version 1.2.</li>

        <li>Ignore comments in GenericIllegalRegexp check,
        contributed by Daniel Grenner (request 680988, patch 902109).</li>

        <li>UnnecessaryParentheses check contributed by
        Eric Roe (patch 911086, request 634834)</li>

        <li>Added ignoreNonLocal property to UnusedParameter
        check to check only private and static methods (request 787683)</li>

        <li>Added excludeScope property to
        Javadoc(Method|Variable|Type|Style) checks (request
        846108)</li>

      </ul>

      <p> Resolved bugs: </p>

      <ul>

        <li>Incorrect documentation of cmdline options
        (bug 865610).</li>

        <li>FinalParameter now reports column of start of
        parameter declaration. (bug 864900)</li>

        <li>Fixed inconsistent handling of NLOW (new
        line on wrap) option by LeftCurly check. (bug 866501)</li>

        <li>JDK 1.4 classes used by usage checks.
        (bug 876570)</li>

        <li>Error in reporting UnusedLocalVariable for
        multi-dimensional array index.
        (bug 878608)</li>

        <li>MagicNumberCheck throws NumberFormatException
        with negative octal and hex ints and longs.</li>

        <li>JavadocStyleCheck throws StringIndexOutOfBoundsException
        when open tag character, &lt;, is the last character on a line.</li>

        <li>UnusedPrivateMethod false positive (ternary call).
        (bug 880954)</li>

        <li>Cast causes MagicNumberCheck error.
        (bug 890706)</li>

        <li>Conflict between ParenPad and
        NoWhiteSpaceBefore when code uses empty for loop
        initializers. (bug 895072)</li>

        <li>Fixed JavadocStyleCheck to handle inline
        javadoc tags correctly (bug 897749)</li>

        <li>Updated documentation for ReturnCount check to
        reflect that it doesn't check equals() method (bug 904443)</li>

        <li>Erroneous UnusedPrivateField error
        when the left operand is enclosed in parentheses
        and the field is in the right operand (bug 908339)</li>

        <li>ExplicitInitialization shouldn't report about
        explicitly initialized member of interface (bug 909619)</li>

        <li>DesignForExtension fires for private inner
        classes (bug 884035).</li>

        <li>Entity resolver for configuration files now handles
        all previous versions of the configuration DTD locally, without
        accessing the internet (bug 909987).</li>

        <li>Fixed handling of imports for inner classes
        in RedundantThrows (bug 925263)</li>

      </ul>

      <p>
        Removed features:
      </p>

      <ul>

        <li>Removed ignoreLines property of RegexpHeader check.  To make some
        line optional use &quot;^.*$&quot; regexp for this line.</li>

        <li>Fixing bug 895072 required changing the logic of
        the NoWhiteSpaceBefore and ParenPad checks.
        When a for loop has an empty initializer
        (like <code>for (; i &#x3C; j; i++)</code>)
        both checks will not check whitespace between the opening parenthesis
        and the first semicolon any more.
        To enforce your coding rules for such code, you need to use
        the EmptyForInitializerPad check.</li>

      </ul>

      <p>
        API changes:
      </p>
      <ul>

        <li>Added programmatic access to token type
        documentation (request 724871)</li>

        <li>All comments are wrapped in TextBlocks
        (request 885993).</li>

      </ul>
    </section>

    <section name="Release 3.3">
      <p>
        Distribution:
      </p>
      <ul>

        <li>Renamed checkstyle-version-optional.jar to
        checkstyle-optional-version.jar to make the distribution
        <a href="http://maven.apache.org">Maven</a> friendly.</li>

      </ul>

      <p>
        New features:
      </p>
      <ul>
        <li>Fixed grammar build process (request 827781).</li>

        <li>Added caseSensitive property to ImportOrder check
        (bug 842604).</li>

        <li>Added classpathref property to ant task
        (patch 835896, from Ville Skytta (scop)).</li>

      </ul>

      <p>
        Resolved bugs:
      </p>

      <ul>
        <li>Removed MutableException dependency from
        1.4 API.(bug 842756)</li>

        <li>j2ee.EntityBean check for constructor is incorrect
        (bug 846110).</li>

        <li>Fixed ArrayIndexOutOfBounds in JavaStyle
        (bug 841942).</li>

        <li>Fixed 8433887 - XHTML not handled correctly
        in JavadocStyle.</li>

        <li>Fixed ArrayTypeStyle error when type declaration
        and variable/method name are placed on different lines
        (bug 848750).</li>

        <li>Fixed several typos in documentation (patch 848483
        from Ville Skytta (scop)).</li>

        <li>xmllogger.dtd is out-of-date
        (bug 847974).</li>

        <li>ArrayTypeStyle shouldn't check method definition
        (bug 849450).</li>

        <li>Added link to summary page in
        checkstyle-frames.xsl (bug 852397).</li>

        <li>Fixed bug #791245: checkstyle-frames.xsl
        cannot handle multiple leafs.</li>

        <li>Fixed handling of inheritDoc in JavadocMethod
        check (bug 855839).</li>

        <li>Fixed bug #853225 - Indentation gives false
        errors.</li>

        <li>Wrong documentation for FinalLocalVariable
        (bug 860990).</li>

      </ul>
    </section>

    <section name="Release 3.2">
      <p>
        Distribution:
      </p>
      <ul>

        <li>Checks that are designed to be used for a
        special class of applications (like J2EE) or that require
        external libraries are now distributed in a separate jar
        file. This is similar to the way the <a href="http://ant.apache.org">Ant</a>
        distribution is organized.</li>

        <li>Updated Jakarta Regexp library to version 1.3.</li>

      </ul>

      <p>
        New features:
      </p>

      <ul>

        <li>Added ability for user to incorporate custom listeners (requests
        738205, 738388). Example listeners perform verbose and Commons Logging
        audits (request 737584).</li>

        <li>Added JavadocStyle check to ensure they are
        stylistically well formed. Nice patch from Chris Stillwell.</li>

        <li>Added check for trailing comma in array
        initialization (module ArrayTrailingComma, request
        696301).</li>

        <li>MagicNumberCheck now checks array initializers (request
        745949).</li>

        <li>Added check for uncommented main
        methods (debugging leftovers). (module UncommentedMain,
        request 732257)</li>

        <li>Added check to enforce that anonymous inner classes do
        not exceed a certain length (module AnonInnerLength,
        request 715709, contributed by Rob Worth).</li>

        <li>Added TypecastParenPadCheck to check the padding of
        typecasts (bug 750348).</li>

        <li>Added ignoreFormat property to HiddenFieldCheck (request 748830).</li>

        <li>Nice patch from Matt Quail to DetailAST to replace all the
        repeated int[] array construction with a BitSet.</li>

        <li>Patch from Matt Quail to stop the ugly hack of having hard coded
        constants in TokenTypes. The big risk was that when the grammar changed, the generated
        constants could change (patch 757846).</li>

        <li>Added excludes property to AvoidStarImport, contributed
        by Bill Schneider (request 744955).</li>

        <li>Added CyclomaticComplexityCheck from Simon Harris.</li>

        <li>Added check to catch equality comparison with string literals
        using the == operator (module StringLiteralEquality, request 754835).</li>

        <li>Added check for definition of covariant equals() method
        without overriding method equals(comp.lang.Object)
        (module coding.CovariantEquals).</li>

        <li>Added NestedTryDepthCheck and
        NestedIfDepthCheck from Simon Harris (requests 750736 and
        750744).</li>

        <li>Added IllegalTokenCheck from Simon Harris
        (request 750755).</li>

        <li>Added allowInSwitchCase property to AvoidNestedBlocksCheck
        to allow limiting the scope of variables to one case of a switch statement.</li>

        <li>Added checks for J2EE requirements.</li>

        <li>Added a check that an overriding clone() method invokes
        super.clone().</li>

        <li>Added a check that an overriding finalize() method invokes
        super.finalize().</li>

        <li>Added usage checks OneMethodPrivateFieldCheck, UnusedLocalVariableCheck,
        UnusedParameterCheck, UnusedPrivateFieldCheck, UnusedPrivateMethodCheck.</li>

        <li>Added filters for audit events (partially fulfills request 559103).
        A SuppressionFilter denies events according to a suppressions file (request 756416).</li>

        <li>Made basedir property of Checker OS agnostic
        (request 663149).</li>

        <li>Enhanced RedundantModifier to check that all private methods and all methods in a
        final class do not contain modifier final (discussed in request 775011).</li>

        <li>Added MethodLengthCheck option for counting empty and comment lines
        (requests 589358 and 654039).</li>

        <li>Added a check for illegal token text
        (requests 740694 and 750633).</li>

        <li>Added property to HiddenFieldCheck to ignore the parameter of
        property setter methods (request 790456).</li>

        <li>Added DescendantToken check (request 755021).</li>

        <li>Added IllegalCatch check from Simon Harris (request 750746).</li>

        <li>Added PackageDeclaration check from Simon Harris (request 750753).</li>

        <li>Added JUnitTestCase check from Simon Harris (request 750761).</li>

        <li>Added MutableException check from Simon Harris (request 750750).</li>

        <li>Added AbstractClassName check from Simon Harris (request 750749).</li>

        <li>Added ThrowsCount check from Simon Harris (request 750742).</li>

        <li>Added ReturnCount check from Simon Harris (request 750745).</li>

        <li>Added CyclomaticComplexity check from Simon Harris (request 750756).</li>

        <li>Added ExecutableStatementCount check from Simon Harris (request 750751).</li>

        <li>Added property to HiddenFieldCheck to ignore constructor parameters
        (request 798240).</li>

        <li>Added check for illegal type of variable,
        parameters and return value of methods contributed by Simon
        Harris (request 750739, module IllegalType)</li>

        <li>Added check for correct declarations order
        contributed by Roland Auckenthaler (module
        DeclarationOrder)</li>

        <li>Added ParameterAssignment check contributed
        by Simon Harris (request 750748).</li>

        <li>Added FinalLocalVariable check from Roland
        Auckenthaler and Kevin Gibbs.</li>

        <li>Added check for correct grouping/order of
        imports from Bill Schneider (module ImportOrder, request
        745548)</li>

        <li>Added Indentation check from John Richardson
        (request 493366)</li>

        <li>Added check for explicit initialization class
        and object variable to value which is default for variable's
        type (module ExplicitInitialization, request 614387).</li>

        <li>Added check to find duplicate code
        (module StrictDuplicateCode, request 650710).</li>

      </ul>

      <p>
        Resolved bugs:
      </p>

      <ul>

        <li>Fixed NPE when running ArrayTypeStyle check (bug
        744573)</li>

        <li>Typo in HideUtilityClassConstructor description (bug
        743973)</li>

        <li>False MagicNumberCheck errors for interfaces (bug
        745941)</li>

        <li>Docs for severity (bug 745937)</li>

        <li>EmptyBlock does not accept stmt option (bug 747400)</li>

        <li>Inner class fields interpreted as local variables (bug 747530)</li>

        <li>Fixed typo in documentation for PackageName
        (bug 7480028)</li>

        <li>NumberFormatException in MagicNumberCheck (bug 748913)</li>

        <li>Removed broken support for checking typecasts from
        ParenPadCheck (bug 750348)</li>

        <li>Fixed grammar problems with unclosed string
        literals and multiple-lines comments (bug 694111)</li>

        <li>Fixed grammar definition for identifiers to
        handle all Unicode symbols (bug 755744)</li>

        <li>Corrected misspelling of &quot;precede&quot; (bug 744342)</li>

        <li>EmptyForIteratorPadCheck errors when for statement
        wraps at the iterator (bug 777471)</li>

        <li>False alarms from IllegalInstantiation for
        user defined classes with the same names as those in
        java.lang (bug 772832)</li>

        <li>NoSuchElementException in JavadocStyleCheck (bug 785514)</li>

        <li>RedundantModifierCheck error for public modifier of a
        method defined in an inner implementation (bug 784814)</li>

        <li>MagicNumberCheck does not permits negative constants (bug 788106)</li>

        <li>NullPointerException in Unused... checks (bug 787672)</li>

        <li>NoSuchMethodError when line wrapped at dot
        operator (bug 790209)</li>

        <li>Removed finder restrictions of LocalHomeInterfaceCheck
        and RemoteHomeInterfaceCheck (bug 791591)</li>

        <li>Fixed NoSuchMethodError when line wrapped at dot operator (bugid 790209)</li>

        <li>Incorrect usage checks documentation (bug 790457)</li>

        <li>CyclomaticComplexityCheck not documented in docs (bug 783800)</li>

        <li>Changed configuration documentation example from checkstyle_checks.xml
        to sun_checks.xml  (see bug 750169)</li>

        <li>JavadocStyleCheck doesn't accept {@inheritDoc} javadoc (bug 798405)</li>

        <li>Unused local variables are not always detected (bug 798111)</li>

        <li>Fixed allowThrowsTagsForSubclasses/allowMissingThrowsTag interfere (bug 803577) </li>

        <li>Unused... checks don't work together (bug 805954)</li>

        <li>NoWhitespaceBeforeCheck error with an interface (bug 806242)</li>

        <li>NoWhitespaceBeforeCheck error for anonymous inner class (bug 806243)</li>

        <li>Usage of optional checks should be documented (bug 806961)</li>

        <li>Changed default format for ConstantName to
        ^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$ to please regexp library (see bug
        807571)</li>

        <li>HiddenFieldCheck error for a local variable of a static
        method with same name as an instance field (bug 827713)</li>

        <li>Changed HideUtilityClassConstructorCheck behaviour for classes
        that do not extend java.lang.Object directly (partial fix for bug 824754)</li>

        <li>False alarms for abstract classes from FinalClass (bug 837012)</li>

        <li>Added Checker.removeListener() (fix for 834367)</li>

      </ul>

      <p>
        API changes (only relevant for IDE plugin authors):
      </p>
      <ul>

        <li>AuditListener and AuditEvent have been moved
        from package com.puppycrawl.tools.checkstyle to package
        com.puppycrawl.tools.checkstyle.api.</li>

      </ul>

    </section>

    <section name="Release 3.1">

      <p>
        New features:
      </p>
      <ul>
        <li>Patch from David Schneider to have severity levels
        for each check (request 597683).</li>

        <li>Added check to avoid inline conditionals like
        &quot;b ? x : y&quot; (module AvoidInlineConditionals, request
        597790).</li>

        <li>Added check that blocks are not introduced at
        arbitrary places but only for if, while, etc. (module
        AvoidNestedBlocks, request 632442).</li>

        <li>Added check to enforce that utility classes
        (classes that have only static methods) cannot be instantiated
        (module HideUtilityClassConstructor, request 634838).</li>

        <li>Added check to enforce an API design that shields
        classes against bugs in derived classes (module
        DesignForExtension, request 659715).</li>

        <li>Added check to enforce that Interfaces do not
        contain only constants (module InterfaceIsType, request 659717, see
        [Bloch, Effective Java], Item 17 &quot;Use interfaces only to define
        types&quot;).</li>

        <li>Added check to detect the double-checked locking
        idiom (module DoubleCheckedLocking, request 709333).</li>

        <li>Added check to enforce C style (char c[]) or Java
        style (char[] c) for array type declaration (module ArrayTypeStyle,
        request 493380).</li>

        <li>Added check to enforce that method parameters are
        final (module FinalParameters, request 528196).</li>

        <li>Added module to enforce that files end
        with a newline character, contributed by Christopher Lenz
        (module NewLineAtEndOfFile, request 662544).</li>

        <li>Many documentation improvements, contributed by
        Peter Dobratz.</li>

        <li>Patch from Simon Kitching to allow more
        configuration control over the JavadocMethodCheck.</li>

        <li>Checkstyle ant task outputs version info
        in verbose and debug mode (request 550483).</li>

        <li>Patch from Oleg Sukhodolsky to add FinalCheck to
        check that classes are declared final if they only contain private
        constructors (request 696290).</li>

        <li>Patch from Oleg Sukhodolsky to add
        MissingSwitchDefaultCheck to check that a switch statement has a
        default clause (request 564199).</li>

        <li>Patch from Oleg Sukhodolsky to fix TranslationCheck
        Test bug. (bug 720925).</li>

        <li>Patch from Oleg Sukhodolsky to fix documentation.
        (bug 727896).</li>

        <li>Added check to find empty statements (module
        EmptyStatement, request 724573).</li>

        <li>Added check to find magic numbers (module
        MagicNumber, request 564206).</li>

        <li>One more option for JavadocMethodCheck
        (allowThrowsTagsForSubclasses, request 540383)</li>

        <li>Added sourceName property to AuditEvent and
        LocalizedMessage; and &quot;source&quot; attribute to
        &quot;error&quot; element of XMLLogger output (request 686336).</li>

        <li>Added line and column numbers to configuration
        parse exceptions (request 714962).</li>

        <li>Added check for redundant exceptions in
        throws clause (module RedundantThrows, request 579056)</li>

        <li>Added property for GenericIllegalRegexp to
        customize reported message (module GenericIllegalRegexp,
        property message, request 738567)</li>

        <li>Moved the location of the file
        checkstyle_packages.xml to be in the directory
        com/puppycrawl/tools/checkstyle. This is to work around a bug in
        NetBeans (request 739881).</li>

        <li>Patch from Dale King to enhance the GUI with
        a Reload Java File button and storage of the current directory
        of the last opened file (request 740545).</li>

        <li>Patch from Bill Schneider to add
        GenericIllegalRegexpCheck property to perform
        case-insensitive matches (request 740112).</li>

      </ul>

      <p>
        Resolved bugs:
      </p>

      <ul>

        <li>False alarms from RightCurly module for code that
        does not have braces in if-then-else (bug 689836).</li>

        <li>Grammar incorrectly defaulting unqualified floating
        point literals to be float, when they should be double (bug
        713716).</li>

        <li>&quot;threadsafe&quot; was treated as a Java
        keyword, resulting in parser errors for sources that use it as an
        identifier (bug 710319).</li>

        <li>ConfigurationLoader was not public (only relevant
        for IDE plugin authors).</li>

        <li>HTML syntax errors in documentation (bug
        721458).</li>

        <li>Error when writing a DOS file name from
        checkstyle-frames.xsl (bug 713845).</li>

        <li>Files were not being closed by
        Utils.getLines().</li>

        <li>Missing documentation for the EmptyForIterator
        check (bug 740038).</li>

      </ul>

      <p>
        Development Team:
      </p>
      <ul>
        <li>Oleg Sukhodolsky has joined the team.</li>
      </ul>

    </section>

    <section name="Release 3.0">

      <p>
        New features:
      </p>

      <ul>
        <li>Completely new architecture based around pluggable modules. This means that users can now write their own checks without changing the source code of checkstyle itself (request 578712).</li>
        <li>Users can specify the Java token types for which a check must be performed. For example users can now control that there should be whitespace after 'synchronized' but not after 'if' (request 536385).</li>
        <li>Detect classes that override 'equals()' but not 'hashCode()' (request 554373).</li>
        <li>Detect inner assignments, e.g. 'this.add(label = new JLabel("yes, I'm a C hacker"));' (request 521325).</li>
        <li>Detect matches of generic regular expressions (requests 595254, 621247, 630536).</li>
        <li>Find empty blocks (not only empty catch blocks, request 609523).</li>
        <li>Check spaces at empty for iterators (requests 565666, 583725).</li>
        <li>Detect missing property file keys in internationalized applications (request 634966).</li>
        <li>Check content of @author and @version tag against a regular expression.</li>
        <li>Detect hiding of fields by parameters or local variables with the same name (request 471897).</li>
        <li>Detect obsolete final modifier in interfaces (request 651121).</li>
        <li>Detect whitespace before ';' (request 521323).</li>
        <li>Added DTD for XML output (request 622157).</li>
        <li>Added an XSL stylesheet to convert XML output to plain text, contributed by Jon Scott Stevens.</li>
        <li>Added a Portuguese localization, contributed by Pedro Morais.</li>
        <li>Added a Finnish localization, contributed by Ville Skyttä.</li>
        <li>Added a French localization, contributed by Pierre Dittgen.</li>
      </ul>

      <p>
        Resolved bugs:
      </p>
      <ul>
        <li>Fully-qualified @throws claimed unused (bug 658805).</li>
        <li>Expected @return tag when one is there (bug 579190).</li>
        <li>Package name reported incorrectly (bug 622290).</li>
        <li>Empty header filename silently ignored (bug 629139).</li>
        <li>Array instantiation incorrectly flagged (bug 626875).</li>
        <li>Tests fail with non-English locale (bug 594469).</li>
        <li>Cachefile streams were not closed (bug 665016).</li>
        <li>Ant Task: NullPointerException when type was not specified in formatter (bug 670321).</li>
      </ul>

      <p>
        Removed features:
      </p>
      <ul>
        <li>Removed support for Japanese localization until we find a new maintainer.</li>
      </ul>

      <p>
        API changes (only relevant for IDE plugin authors):
      </p>
      <ul>
        <li>Configuration is not based on Properties any more. Instead a Configuration interface is used, IDE plugins can define their own way of creating Configurations or they can reuse the provided ConfigurationLoader to read checkstyle's standard XML config files.</li>
      </ul>

      <p>
        Development Team:
      </p>
      <ul>
        <li>Rick Giles has joined the team.</li>
      </ul>
    </section>

    <section name="Release 2.4">
      <p>
        New features:
      </p>
      <ul>
        <li>Major refactoring on the way Checkstyle is configured. It is now completely based around properties. Big thanks to Vincent Massol for the suggestion on how to refactor the ANT task (bug 605141).</li>
        <li>Check the package name against a pattern (request 597787). Patch provided by Simon Langford.</li>
        <li>Detect the number of parameters in a declaration exceeding a specified amount (request 582144).</li>
        <li>Inspired by patch 580410 from Shinya Ohnuma, now the error messages are localised.</li>
        <li>Support checking to determine if an unused <code>@throws</code> exception is a subclass of <code>java.lang.Error</code> (request 583719).</li>
        <li>Incorporate patch 555878 from Rick Giles to allow pattern for local final variables to be specified.</li>
        <li>Incorporate patch 566855 from Rob Worth to optionally check that parenthesis are padded with spaces.</li>
        <li>Incorporate patch 590931 from Vijay Aravamudhan to improve documentation of the build.xml file.</li>
        <li>Incorporate patch from Vijay Aravamudhan to enforce requiring @version tag (request 543964).</li>
        <li>Incorporate patch 607481 from Ville Skyttä to enforce wrap on operator at EOL.</li>
      </ul>

      <p>
        Resolved bugs:
      </p>
      <ul>
        <li>Incorporate a patch from Ronald Hastings (Boeing) to correctly handle C++ style comments being between Javadoc comments and declarations.</li>
      </ul>

      <p>
        API changes (only relevant for IDE plugin authors):
      </p>
      <ul>
        <li>Many changes to the Configuration object.</li>
      </ul>
    </section>

    <section name="Release 2.3">
      <p>
        New features:
      </p>
      <ul>
        <li>Support checking to determine if an unused <code>@throws</code> exception is a subclass of <code>java.lang.RuntimeException</code> (request 540382).</li>
        <li>Detect instantiations of classes that should not be instantiated (e.g. java.lang.Boolean) (request 550205).</li>
        <li>Added ability to specify the base directory for reporting file names (request 571161).</li>
        <li>Check for line wrapping on operators (request 553160).</li>
        <li>Detect empty <code>try</code> blocks.</li>
        <li>Detect empty <code>catch</code> blocks (request 516255).</li>
        <li>Detect empty <code>finally</code> blocks.</li>
        <li>Detect to-do comments (request 504275).</li>
        <li>Detect use of lowercase l ("ell") in long integer literals.</li>
        <li>Include column number in the XML output (request 555262).</li>
        <li>Added ability to specify a properties file on the command line (request 557544).</li>
        <li>Check for whitespace around "{" and "}" (request 557544).</li>
        <li>Fix Javadoc errors under JDK 1.4 (request 568553).</li>
        <li>Detect redundant <code>abstract</code> modifier in interfaces (request 573485).</li>
        <li>Support running Checkstyle using the <code>-jar</code> option.</li>
      </ul>

      <p>
        Resolved bugs:
      </p>
      <ul>
        <li>Better error reporting for missing properties files (bug 576165).</li>
        <li>Ant task now logs style violations as errors (bug 561616).</li>
      </ul>

      <p>
        API changes (only relevant for IDE plugin authors):
      </p>
      <ul>
        <li>The get/setOutputStream methods have been removed from the AuditListener interface. The XMLLogger and DefaultLogger implementations now expect OutputStreams to be provided as a constructor argument.</li>
        <li>The DefaultLogger now differentiates between info messages ("started checking file ...", etc.)  and error messages (style errors found by checkstyle).</li>
      </ul>
    </section>

    <section name="Release 2.2">
      <p>
        Resolved bugs:
      </p>
      <ul>
        <li>The cache was not invalidated upon parameter change (Bug 522282).</li>
        <li>Tabs were not counted correctly in line length checks (Bug 524671).</li>
        <li>Problem when a Checker could not be created (Bug 528358).</li>
        <li>The documentation of the command line property names did not list the property checkstyle.allow.tabs (Bug 529975).</li>
        <li>The default regular expression for constant names allowed consecutive '_' characters to occur (Bug 540358).</li>
        <li>Checkstyle reported unused @throws tag for multiple declarations of the same Exception. According to the Java BugParade this is incorrect, multiple @throws tags for the same exception are OK (Bug 540384).</li>
      </ul>

      <p>
        New features:
      </p>
      <ul>
        <!--(Feature request 498879)-->
        <li>added check for whitespace around '()'</li>
        <!--(Feature request 500122)-->
        <li>added support for JDK 1.4 assert statements</li>
        <!--(Feature request 515787)-->
        <li>added column number to error messages for better Emacs integration</li>
        <!--(Feature request 524650)-->
        <li>added possibility to disable line-length checking by means of regular expressions</li>
        <!--(Feature request 531229)-->
        <li>added possibility to disallow import of package hierarchies, e.g. sun.*</li>
        <!--(Feature request 534038)-->
        <li>added failureProperty to ANT task</li>
        <!--(Feature request 537107)-->
        <li>added check for 'public' modifier in interface method declarations, following the recommendation in chapter 9.4 of the Java Language Specification</li>
        <!--(Feature request 545128)-->
        <li>added -r "dir" option to the commandline frontend, checkstyle will find all Java files contained in the specified directory</li>
        <!--(Patch 531230 + enhancements)-->
        <li>incorporated patch from Warner Onstine to configure the ANT task by means of a property file</li>
        <li>added 'contrib' directory, contains XSL stylesheets for formatting checkstyle's XML output (contributions by Ingmar Stein, Stephane Bailliez, Scott McCrory and Gray Herter)</li>
      </ul>
    </section>

    <section name="Release 2.1">
      <p>
        New features:
      </p>
      <ul>
        <li>added check for package.html</li>
        <li>added flag allowPackage which acts similar as allowProtected</li>
        <li>added support for ignoring multiple lines in the file header</li>
        <li>added support for specifying the file header by means of regular expressions</li>
        <li>added whitespace checks around '.', e.g. System . out . println()</li>
        <li>added check for names of methods and local variables</li>
        <li>check the order of modifiers (public, static, etc.) against the recommendation in the Java Language specification</li>
        <li>added checks for curly braces placement</li>
        <li>incorporated patch from Andrew Lang for more robust Javadoc parsing</li>
      </ul>
    </section>

    <section name="Release 2.0">
      <p>
        Changes:
      </p>
      <ul>
        <li>Now released under the GNU Lesser General Public License (LGPL).</li>
        <li>Fix bug #508010, documentation and code are inconsistent.</li>
        <li>Changes to make it build "out of the box".</li>
      </ul>
    </section>
  </body>
</document>