Compare commits
423
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
161d9cd6d6 | ||
|
|
a55b93dd21 | ||
|
|
5accf41cc4 | ||
|
|
42b494189d | ||
|
|
db95f016d2 | ||
|
|
dafbb5853f | ||
|
|
14352a7507 | ||
|
|
99d29c78e5 | ||
|
|
dad61739ed | ||
|
|
c62e4beec3 | ||
|
|
a29fc094f9 | ||
|
|
a3a48e2cb9 | ||
|
|
386e91fd43 | ||
|
|
12b731fb19 | ||
|
|
114922d2d4 | ||
|
|
55e0c4baf1 | ||
|
|
0913608457 | ||
|
|
054c06462f | ||
|
|
7679220cc0 | ||
|
|
1671046e49 | ||
|
|
51225d84ed | ||
|
|
d70c2ba254 | ||
|
|
af06c221d0 | ||
|
|
6fea4ebc2b | ||
|
|
75f2f18395 | ||
|
|
2416b88725 | ||
|
|
310de01fd0 | ||
|
|
6721e190b0 | ||
|
|
d5d083745f | ||
|
|
29c5d5b49b | ||
|
|
438b015b3d | ||
|
|
7805868f72 | ||
|
|
36e91f111d | ||
|
|
10b100dded | ||
|
|
15f99400be | ||
|
|
e30503b372 | ||
|
|
2e3fe51834 | ||
|
|
f670fa95ab | ||
|
|
ca5cddf467 | ||
|
|
536176f359 | ||
|
|
ec79ac1004 | ||
|
|
f67c4a2adc | ||
|
|
3113e4ad0f | ||
|
|
382aa8e142 | ||
|
|
616746c004 | ||
|
|
5bbbaeac1e | ||
|
|
b3a78c4ac6 | ||
|
|
64137d3231 | ||
|
|
eec6aa2a9a | ||
|
|
47171207ff | ||
|
|
2649cf4e5b | ||
|
|
3498cde1f9 | ||
|
|
c5fdf94b03 | ||
|
|
dea38d44c9 | ||
|
|
38d97c72a9 | ||
|
|
c2643f0278 | ||
|
|
d47b130a89 | ||
|
|
db767317e1 | ||
|
|
849e3ada8d | ||
|
|
3760f53ab1 | ||
|
|
78c5ce4636 | ||
|
|
7f2a052d00 | ||
|
|
8b3a9c49cb | ||
|
|
7ee3e938cc | ||
|
|
5cca9e8f50 | ||
|
|
f9e2fc7e54 | ||
|
|
755ae837c1 | ||
|
|
15bd890110 | ||
|
|
1eed0993b3 | ||
|
|
99a79ccd17 | ||
|
|
f6c3669a66 | ||
|
|
d4cc311486 | ||
|
|
4588879062 | ||
|
|
b8accbb01a | ||
|
|
94d298168b | ||
|
|
d14c7a9636 | ||
|
|
06be510702 | ||
|
|
212bf46be8 | ||
|
|
7d3f287f38 | ||
|
|
98807dae25 | ||
|
|
4999c5f9ff | ||
|
|
b0336d3616 | ||
|
|
492f1798d8 | ||
|
|
16f0633193 | ||
|
|
e3018c3892 | ||
|
|
848a0761fe | ||
|
|
849cb30054 | ||
|
|
89d286be59 | ||
|
|
65a3e1a3f7 | ||
|
|
86c89040b4 | ||
|
|
291d36d841 | ||
|
|
b98bd0bb96 | ||
|
|
d8c51db85e | ||
|
|
acdab9df56 | ||
|
|
7a8847bacb | ||
|
|
c9f686903e | ||
|
|
2eaaaa42aa | ||
|
|
dc19269491 | ||
|
|
921d4190d7 | ||
|
|
2264d3c964 | ||
|
|
ff5e83b21d | ||
|
|
7ebcb30aaa | ||
|
|
d0efb3cad7 | ||
|
|
58b1985509 | ||
|
|
b9501e5c77 | ||
|
|
378bfe5948 | ||
|
|
bec314ef27 | ||
|
|
2fb3cd13cb | ||
|
|
ff63c5681a | ||
|
|
ded5c1ca51 | ||
|
|
a30d23e587 | ||
|
|
03124c5673 | ||
|
|
6ef3b5a583 | ||
|
|
c6b529dde8 | ||
|
|
0a026a8142 | ||
|
|
86dc44de3e | ||
|
|
e86166ee62 | ||
|
|
faabb2a84e | ||
|
|
df7cc1c3a7 | ||
|
|
af5130ab00 | ||
|
|
42ab05551d | ||
|
|
a17f38a8c1 | ||
|
|
079fe95152 | ||
|
|
f25a2e08aa | ||
|
|
348a11f119 | ||
|
|
df64d8bfce | ||
|
|
2cf941dd4e | ||
|
|
f3c54cf7ec | ||
|
|
982effe744 | ||
|
|
d743303f2e | ||
|
|
f13227176c | ||
|
|
26f5a41c47 | ||
|
|
45d0e12437 | ||
|
|
1740d25cd7 | ||
|
|
1f79968bbb | ||
|
|
5cf2334413 | ||
|
|
7bba6c46a2 | ||
|
|
7dd07c9151 | ||
|
|
8a9e0b9eff | ||
|
|
5e2b4a8d5c | ||
|
|
4518289d0c | ||
|
|
780a9e5dde | ||
|
|
cba80b2e0e | ||
|
|
a4176126ca | ||
|
|
241eda93b9 | ||
|
|
d500e7be48 | ||
|
|
cbbc9f495b | ||
|
|
d528dcd5d4 | ||
|
|
40ce9313ae | ||
|
|
3269f3a6ca | ||
|
|
bf8964f9a4 | ||
|
|
543795e550 | ||
|
|
1796d2a7a5 | ||
|
|
1812880c47 | ||
|
|
f5069256b9 | ||
|
|
4066ca9986 | ||
|
|
a453566caa | ||
|
|
d2cdcb7262 | ||
|
|
c7455012d4 | ||
|
|
3cf456dbfa | ||
|
|
53b2b288ac | ||
|
|
b8cffe638e | ||
|
|
71ce6c2eae | ||
|
|
27ac0944b5 | ||
|
|
b9b19ec3ab | ||
|
|
91d4d909ad | ||
|
|
2feac39d2f | ||
|
|
e17a965e03 | ||
|
|
6684c58bfb | ||
|
|
12418e5656 | ||
|
|
101a2c4100 | ||
|
|
5526cae376 | ||
|
|
e90e01b695 | ||
|
|
1855bb5797 | ||
|
|
eb03003f66 | ||
|
|
94dc4694f2 | ||
|
|
ec011cc885 | ||
|
|
ec665de1a2 | ||
|
|
cb323a3496 | ||
|
|
9529dd9ad7 | ||
|
|
53a763d901 | ||
|
|
c4857aaa20 | ||
|
|
707781600f | ||
|
|
944c1222d2 | ||
|
|
ff15f914f4 | ||
|
|
43a21997d9 | ||
|
|
be4a3a2940 | ||
|
|
3bbd355d1c | ||
|
|
22c143f6e6 | ||
|
|
b8fb9bd63f | ||
|
|
9d8a8d74fb | ||
|
|
ba19c59bdb | ||
|
|
e888283b39 | ||
|
|
89f6ae5806 | ||
|
|
74ed544500 | ||
|
|
a9c8ad7d97 | ||
|
|
62612dc507 | ||
|
|
1cab291ee8 | ||
|
|
f773581459 | ||
|
|
f8bb0488d8 | ||
|
|
7e53729baa | ||
|
|
19b9c841dc | ||
|
|
c9cb88e55c | ||
|
|
51c72c7a9f | ||
|
|
7bc0305835 | ||
|
|
e4566ea17a | ||
|
|
44e23e7d2e | ||
|
|
eaabd8e646 | ||
|
|
142bf1a82e | ||
|
|
16402c9f13 | ||
|
|
0ae88f7cd0 | ||
|
|
c3ea6de8e0 | ||
|
|
7bbb688859 | ||
|
|
319c6cd073 | ||
|
|
3332117fe3 | ||
|
|
414e4a13fb | ||
|
|
e3dfda3cca | ||
|
|
bfa15f2191 | ||
|
|
fb0e455e49 | ||
|
|
01c622af10 | ||
|
|
8ea5fa1447 | ||
|
|
ff5fe372df | ||
|
|
3c3abcadeb | ||
|
|
802104525a | ||
|
|
89f027a64f | ||
|
|
7d9fd61c50 | ||
|
|
ee059422fd | ||
|
|
4c0b18068f | ||
|
|
7bdb10bccd | ||
|
|
62254aa6c2 | ||
|
|
51a1ef1171 | ||
|
|
f2cb480595 | ||
|
|
fadbbbba02 | ||
|
|
2dbb332f00 | ||
|
|
2ead1237d6 | ||
|
|
a2d0b41388 | ||
|
|
2d87f575d3 | ||
|
|
dcb9d4ade1 | ||
|
|
1306a2b859 | ||
|
|
4b72a66e3c | ||
|
|
db792af06c | ||
|
|
919aa21761 | ||
|
|
5f593561d9 | ||
|
|
5ca1f7438c | ||
|
|
1a69dbf831 | ||
|
|
d859f6e0e3 | ||
|
|
7192663c1a | ||
|
|
b9344ef6f6 | ||
|
|
f7bca5618f | ||
|
|
64682ed07f | ||
|
|
aa2a363994 | ||
|
|
c30c3a3a5e | ||
|
|
57cba95386 | ||
|
|
543aadad20 | ||
|
|
23f57b5819 | ||
|
|
dd99a35aaa | ||
|
|
b22a94c4d4 | ||
|
|
5316dd061b | ||
|
|
6c059d743a | ||
|
|
46bc8447c5 | ||
|
|
3820bdc36c | ||
|
|
ecdd3ad2a7 | ||
|
|
078ffa18e4 | ||
|
|
afaff78468 | ||
|
|
ad5cd0ddad | ||
|
|
a5589e8f3a | ||
|
|
c7ac7ccbd1 | ||
|
|
582218bed9 | ||
|
|
2b0e9e0ccf | ||
|
|
5caee3190a | ||
|
|
c5e2660c41 | ||
|
|
20f52700b4 | ||
|
|
868f262c21 | ||
|
|
6acd758246 | ||
|
|
11cc39a4af | ||
|
|
409e69c474 | ||
|
|
aaa50c996e | ||
|
|
55ae5959cc | ||
|
|
167cb97337 | ||
|
|
7e737b3c8a | ||
|
|
b79f5e93c1 | ||
|
|
428d6d2f88 | ||
|
|
888824d24a | ||
|
|
499dcab9d9 | ||
|
|
2a39c7a4d0 | ||
|
|
580c92c550 | ||
|
|
aba00d14a9 | ||
|
|
a5a0efa1fb | ||
|
|
664d76e072 | ||
|
|
fc3798e76e | ||
|
|
407e940dd4 | ||
|
|
c598d3b049 | ||
|
|
5b03f01e6f | ||
|
|
fa3a985522 | ||
|
|
45af47af4c | ||
|
|
90a7074d97 | ||
|
|
0f92122d8a | ||
|
|
e6e188f301 | ||
|
|
a726a06e17 | ||
|
|
80ea2deb7b | ||
|
|
32b7cba79a | ||
|
|
0ee6b54d38 | ||
|
|
a02bfe8861 | ||
|
|
ede63f0bcb | ||
|
|
beeeb74efb | ||
|
|
f49cd01637 | ||
|
|
7a25d9a910 | ||
|
|
58446a2ecd | ||
|
|
bd4095ed41 | ||
|
|
8b07d09dbf | ||
|
|
3f030a2784 | ||
|
|
369c3fa0a0 | ||
|
|
43ebc4c3c1 | ||
|
|
be76e2809f | ||
|
|
b088c20a96 | ||
|
|
adb7a42494 | ||
|
|
387a8abca9 | ||
|
|
ecb1ddb451 | ||
|
|
58268812f6 | ||
|
|
0b264d5feb | ||
|
|
9c4486f2fb | ||
|
|
c362f5a77f | ||
|
|
0165b006c7 | ||
|
|
cab4234a1f | ||
|
|
0f9bc63bfc | ||
|
|
ca6a543ed1 | ||
|
|
2fd179024d | ||
|
|
a261c41ae7 | ||
|
|
6a4200e158 | ||
|
|
829351cad7 | ||
|
|
c2b35d6f77 | ||
|
|
64ee977b6a | ||
|
|
7153f1bbdf | ||
|
|
f168288abd | ||
|
|
da1f9a5e4e | ||
|
|
bb3426f584 | ||
|
|
29c9121ecd | ||
|
|
171a9904aa | ||
|
|
1ae7deeda7 | ||
|
|
cc9d9f47bd | ||
|
|
da8b1374c0 | ||
|
|
e74539e5b5 | ||
|
|
832687b042 | ||
|
|
7e5cd27ac7 | ||
|
|
b0cc28eead | ||
|
|
19a3d5446f | ||
|
|
251abe223e | ||
|
|
c7404c535b | ||
|
|
5cdd9d5866 | ||
|
|
6221c563c6 | ||
|
|
413c98c2f6 | ||
|
|
388cb86e9f | ||
|
|
db9f6bd730 | ||
|
|
503b54ba8d | ||
|
|
3c5a7f2bcc | ||
|
|
e32935a6dc | ||
|
|
2a3bc7850f | ||
|
|
4e853cb994 | ||
|
|
4ca905b4a0 | ||
|
|
80d9eb796e | ||
|
|
04ff77ce53 | ||
|
|
f8e20d0ac5 | ||
|
|
7821b3c80e | ||
|
|
6323724da4 | ||
|
|
f604fcb989 | ||
|
|
809110a092 | ||
|
|
3ec2cf4c59 | ||
|
|
07516ee8ac | ||
|
|
d6ec50b20f | ||
|
|
6996b8e51d | ||
|
|
2750716f7a | ||
|
|
59145685d7 | ||
|
|
9dc60df946 | ||
|
|
7f3c93debe | ||
|
|
40f0c4d59b | ||
|
|
f07728fe9a | ||
|
|
b0bc21028d | ||
|
|
4b8dba86cf | ||
|
|
118ee1d69d | ||
|
|
c4cf90e4cb | ||
|
|
556de19bd8 | ||
|
|
c0d7085255 | ||
|
|
66a4d8af94 | ||
|
|
9984ee99ec | ||
|
|
1fb7fc5edd | ||
|
|
552bd98e2f | ||
|
|
34a5cbd529 | ||
|
|
24f7d32941 | ||
|
|
80e27d049a | ||
|
|
38f966d3b6 | ||
|
|
7a6bc49826 | ||
|
|
444beeb220 | ||
|
|
edeefa70f0 | ||
|
|
9c71a70294 | ||
|
|
978d77a462 | ||
|
|
39ec32ea63 | ||
|
|
7e07208366 | ||
|
|
2db426fb0c | ||
|
|
32136e0e9e | ||
|
|
4bb34b1c8e | ||
|
|
1e839a6c04 | ||
|
|
ee2678a210 | ||
|
|
23d000536c | ||
|
|
da24020ad9 | ||
|
|
3ec5136dd9 | ||
|
|
0447fd3ddb | ||
|
|
a3d8a806a0 | ||
|
|
05a733d65d | ||
|
|
a5c83089d3 | ||
|
|
a7113b79c4 | ||
|
|
cbf8e6ac4a | ||
|
|
51e0180076 | ||
|
|
2af2aaf74a | ||
|
|
48c4e2ae10 | ||
|
|
44c464c961 | ||
|
|
9770c8855d | ||
|
|
7f99c20e1f | ||
|
|
67da35bf05 | ||
|
|
2aaa468ba4 | ||
|
|
0a85e86e59 | ||
|
|
6a88b5d671 | ||
|
|
eddb9bedfe | ||
|
|
7a6e40cd04 |
No files matched your search
@@ -11,3 +11,5 @@ bin/
|
||||
*.patch
|
||||
*/src/site/site.xml
|
||||
pmd-core/dependency-reduced-pom.xml
|
||||
.bundle
|
||||
vendor
|
||||
+37
-14
@@ -1,5 +1,3 @@
|
||||
dist: trusty
|
||||
sudo: false
|
||||
addons:
|
||||
ssh_known_hosts:
|
||||
- web.sourceforge.net
|
||||
@@ -10,27 +8,51 @@ env:
|
||||
global:
|
||||
- secure: KBEuB6U1p5RQXSYe157AwydFr/zpXQPA0IChVCgZV+X1mMyy9ZtrjH1J1AXuviseDDXDbaT25sRnsvpl82rfRw2xOkMGXHy4N95/ylTSr8DjHxTao71BhXsvFycNobFva5y2EGNWqDvpS8I2oSZo7Qk4la3yep3rcJQvcy6RDbbhpDTbL1QMFyadunIBm0WtqbunrMqtjSqaoPsXz8TiQuxHvX4vEXzVbaxV1QQt79Vi+daa6wAV3mRQAugnx+UffsC8JqMxgm06usWeJgCJzxgm8E7clZCLmf53B2TL8dK6bIYbqyvOY3uFxitsTG0d8Z0GOJwXBgZNgbniTRO8ZJSty5eZP8LBybbjVLSL25DNTWtCjADUL/uySnXIEidlMt2N/3QmH7zrGAfAk/tIwKpdRca2GLLydeXf6PSkiahnPEkIY/QupcsOLELhdifpdOjb8QW1OenA+vUbNM9dccLwKnX6Fj9cu4VQG601AcYDr2eyhq8WYkr3wYdw/6KdUa3hmplowTBs+qguppP+eOSgGuEsy38KLtqnvm6WlHy6tcLmcVYKG3DmR1b7TWXsOXC6/VMH8BHBkvsF1QdRg9+Cgx07vX3Hw7roPiYzmaO9Ajs20ATsUfRskMuWCTeTSK5pN8X27veRCZlhFjeKQMDdmfVwzpAfRgKsl3TEn1I=
|
||||
- secure: U1DfAv6acUUWe+dao/ZSDUX64JRadNJY16rITsdrM4ZNAJSuXpEY3p/LWcYjN7D49YmyutbXH9+L3KKQUQGrGXj9QTarfYvd8ZsKt4FK8yv7AFy+RQNIbAjNEHBzHx15p+srMheTaetl7aLwY0qhF+D/RtGapxHKyY4dBHrb0lp8VGyiCiL7Aop8GGskosi1mtirPBp/BStPZ2bEyxG0QzU5SsVWkJWwV9aWLPVAR/n7Xgx/6Gjl6Fed2c/WSrWi4vchm3Ny8pfTweOax3PGYYjBVxIfuX0mqmwuJsY7gNfXCfN3dPiPKGJPFy1pC+LGyGkklO5ReKFLd4O1ME6fU0dlIGfD6n+Q4H6/w9FHXegcKTfWIJm/MFa6vA/tJM5R6zJQuiTQJboHm/UmS/iQj76z0p6sK15Xp5vFId+/dHKqa8xY+Bt6HiXy6z401HOc8QcYBAf7TqhqUt/ZE7HN4be46uR90KmzIrWz6wEoDW7HfwQ9ZMbs55zoOXrvekyE9/gXskypO0p2JT3Y0vlvO27KQvIrSwI480kOVOrlyrYA+LZqlcKaayOuCuZh4lITQUYinUoZZict5joYthH+Cyh2zovoBpxsntDJdMnaZNLtSC7hlhpbMBYaT2y1O6vZH5Yix0mxuDvs/x6ogP5CNBeUYlXhaL+g4GnwKyr0ZA0=
|
||||
- secure: "ElWjttpoMwqezP2zyHkx7CiPON/mRLUW7SsSlEqdlTUYRIaSaL7sShUORJUzj58U/Nnfi/eY4Rweo0CtVu20sG16s9B4adnmPS44LAitztybPR/co93gN9qb8jiIl41nVcOJq+Rut2Z4nr8AGRhVCG9Drg4+DreCqQ4DE5ZD6J99GN0IFGrREt59HQUlBlT9jD0AndK/1GQ6kWAenuSREE2P5ih59rf6FrrfddQO5iqyFFoaHek3JiOmpaLK+z7i4EvMKsAJEooFNuGhHVuyaJJRRZHAncGiQ+uW/yL7G5rY51G6YSNJczzEtfrRg+YrIUbokUPmifSIbnXO/AIZRAq1dMhA8exRc5n+75RB1X164qm4a+yggdybFBh0L59xu606PJQJAuWy+x10nled7FAVXiotxbB0r2bhlVmWFEN+FWPqXg2rVkHvw6+5PM67rG5g1LCgjKzb9I6JWPiVI+EMn8Pw8gryL2Sdqtl08Da0Ypbl2ZK/afU4CEPEKnrDc9ecXKjacehTYwGS48V213XvArcmoEpsyZDRSMTrvK3/e29GEaxoK/ZzWJylpeOtsICEEFYEBEiDsiIW4C50MIUPT2xHV6MaPQzhkuwrbQ6QFYzHzihBaiQuMmXUQ4DMb3fOPkNZAQHQo8CgJ78IcbCABAoGv9mu/fo2KoLo11U="
|
||||
- secure: "gxI7W4V4fUPQLMCvecXXdet1/mCh6m0RIQMtErVVOnwxEEjeDmko/3rHSl+wk6IeFaaQKcmHJJSJEj+e5TgWRH1uuzCnbFHZhuH28ce/H0EqLJ3GTXeDEgFLzhh//T3ySOZChZELgJ67cKxZJNFMhBVOR2/QIGjZjdzvl36ugsu80Ak3XJb8HCm8D2P8Vuezz/OlCkSOGXaiqZXfflV/cuaLWuueGfQGW9x/UyDTNsuBdB7YnEcxOWt8RgB4JrcPGV7/etxLHXTw9IMEeUhQ/RsxLZHKNYt9cx/QOZkpXemhdT9L2pAIi77eO98x+yAfB1qV6T6IeDd/OiABUzfb7asNBwE+bYRuVkCiWLo3x3hs8FcgsPe4L10guxfRMJPxax9E7uYb9TFxtvc42dDWNyp1BVCtEtmjErO4CJeW97ukhgkUkPhzUZgQ2Gj5Tn4VRjQOQyzh/S/YsHyfxoAQrscc/3bq5PBmtdowyGQd5dsvShdpE6glf+HnBZ8TCw5BaxQuTjapQWjsGuJVCVsrNDtwOFy5UTfxK9OeTUsjwfO5JjkoIeqGyLHPnTMWyZ6EYa//nWPOU1KgVE6Hrzfr3zxEzL1nN/TYahzhKOxXE701W9YhTmhCVljMlSYioTUfTaXHgGLpojvSWlhsTbc3r0gj4NglqakIy7MKgQLgES8="
|
||||
- secure: "otZkFNhApMofp2Jl2baZdpNEPcTa79Xc9wyOw1gl1+ubCLtOGr32FDUSr0HQWKrGXcYZR4bc0A80hx0/ykZ/twJaRAabcNYtjwRMDKKrp3plvp8RTZlB1QW85nsdmk3qmHACzc94wKnmcaDohM5FPxnWspZG5Y4ejYX4HEK6r1fwL4FjMPSLd5QW8yCaAc7dpBSm2UyIXuuDjkekXblJFe8ydbf9aF97WKJMCwqIs9Zo5oJa2pnWCw47ixwjVdkaH5x5727I+YmFqn5rjdEideUFEAlggqMaxuOtfYhuG/8k5W3Q/+WX+G7rEPTcemjmaosbbpoOUE0YUHV3Wi3R5D66NuWIpQwX6kw4rTwL0YIh//0aNb8jv4Z8KwkiTMrYuj0we5tXzARp3yYn56P0JBAm6BihNhfEBv06655Tg5LUsWqUTZCl3KJhwtO1N+OuOkE5qoZm59knq6DeZOsYWAVb3MpzklP06kXGYTjb44PVMUc6ynuuZjgPJDv/0906feA3REHBJVxd3PvJp1c8VvQSeW3ndghEz0akJHY/jxV1rJZAZC1ZeshYUpBNmh0sFDty/UE43IvIB4EInypQHyTtQvMc6LuLjTeu2E5ZMsA3udj66EMrYm4Y2eheJycSfttDqzhsKXIVJ4LmA/xtDR01cp1jsqbbZBhVI67rA40="
|
||||
- secure: "mmHRnK/8CHfgtwaTN3MgjFD1R8EVQhIb/a0Aag3gPaHWW52Ex6xWG7GsF4kRcdzHdIdrQxHZTiDa2oVMWbnQ16CAu4dZJadwTxhBW4JmE1tsi2C6i+uwMBPvnKBXHwt+QOAqNB0L/ByYwWLkucSLoyRs6qU0i7sJ3ZC/EPCuLI8VfBlFUVegSbp2WmclmFnxOi5MKr15Zwd8BGgyWUsvd1OHxhvO3Xr/ZPO4R+1kIgyojloTMu6oGM/shYgsrUXgmI/WvZRTq+25SRCjUmATJtuDXXgVeJtYabi/+Zju5Z7K06oaKvFYM+BgZWPmGQkVCxKVjSlug0rx6+qgRKIf/B/cPxmQDS0ZZVDmDcbxeibBL9JhRqIDwDb0XS9t1qBXvIJ5E4ZmdX/XuvLCnC4xJptu/vHyKl1wbRM3dcXEBk8J0knJc4JvY2yupF3LS32sfEHftLwzr63U3/0dOQvsCSJRBy5zgI8ieABUZAeZmmaQ6RCGOTEYrGO2G4CCF2uVq4YdrCOsfmrb0DzH8llNMkXKzXlITRvmkuBlTRRKxGnPzS3vf0iicdAkmTiU5u7lArFFc7IKcW4ypO+RKDTUpq74K+UZBI9eBjV7Po368EO8epJ5aIx32a2kyS/hYWkS/dZh7I0fNZa2qBUceZO/KZGRjH4dQFW9t0J9Q7LLXJY="
|
||||
- secure: "geOU/7VR83KYTOCR5XkgFqnHJEnXeB6hNDE7UFcN4ZsL9uVLhxlDVWV3ujJ87nyBzggG1KfSnUx11UwOQrbBl0K6sEXo/B2q5ytOsWoSLi7+0qm/uhhw/DTBOq57p8TIDKFM7rDhO7uajSn7Y86LeZkh9wIs5265Fh1yhCkiPbczDUMsX4P0GGg2qgkIKSBw4DZf6sPDc4xjJq/4/cLnjXo/K0ZYAIoSLqDfe1gmkzMtQlad+1t8Lwv/gOJ4BNRF4a5aEvGF6kbFovFoeFWCQTKlkn6VJtY+BETGKW2RH9efGeMs7JbBbNm+nnpoNsbJ0gdmGlhSbWT8enIm72/P0ThTBJWVcLJ30tUd0UeYD9C49wbJ3RHSxsoUKP9YhHJ+XKNx+8irkJ8LPCkNMQEFE153gEVvU7tCgah9Uq6laYZv9cQE0dWzNt3//Ymls8BzY38Ha4PbrIIJqEuWwnAX6ZgTgzVtXx1AJjkDFG9KFKPhN7NfNMbh7rn5C84a1h5zrIydm+6RcIBC+xTLDEiN7djiquf3PcNtyGLcO8dNN4Uv8iU0Jw8ch3+w0PJO53v5py+IS1V8pwwYaYF2iVPOoziS0tP8MsgYVGwpTZhvz3v8x0ge8r6KJE4zdvoPtCRNr2Oo3sJGYqkt86Hu6agKFiljP5AgJNx7iQD5GQn6J3w="
|
||||
- secure: "gqyPF3d75JuwZptnQQQKO6rGUILXGO09y9dZhShdX8qq5Mexa2ISk77Y/b0yyAdhJMgEglls5cWlbHkwCAB0i4yL25RE5CtQUe4er+CIKwBIs0M56ghbcOwWAFB/cXeyyWmXDHBVnVUeKm7IJ34txsEclnMzQSR/DInSzsCFMUQok8HEaWZNssMjyRgo6goKGdG5vNWGfLLY7mKGMe/6PpYJD0G8k+Na08aX06ZWph38He8O3imUAngoQrxiSp0UYmnHDkigbV7S2LdZOsj7kMxkiyigzK/P1eygHVbFAhohLroaqS9B4CBK7QeOyup2vxVKqJVzFwOCylD0786CImvaG2ZYMtvJkapvaEE0mdMlyYpHgdIkmHZu28aMW7hXEhxHyBAxKuPcj5eGCGziO+ztCvfYIA9CGs1uA4KLrED7SahvB0oXnt3KTFdRc857cWcpp2NmRKihLzVdgHlmT8zcYaec3zP1VdMoa2bmLHoaZtAwvMTcAG56FcET1p7f9v+uiU88ZeptEjTJfpAWlq34tpwZXNyIQi5IROocSHM+PKTgLAsAMP5klGascr8E0sEzREl7tg8hqEwXKym/sVKyT+HMptA3UZcrZZhm07/cmQ0pUVvbV9QDb0MzU3O2wF7vT3U7R7Fb1u0LxMjblPyEazTp8ldabVRJREwlsDc="
|
||||
- secure: "JIhuqaI0i+zvuqqXiQBHpuKr7AQ8jfk6Gbr8Qgiq4yJtdEWXZGxnAT9BmlbjkgT7ABXvLgxf2CIdUOMo1yYfBlxQL/y5+e89jaVpYF3tvNAzYQ1e12VzQRsd/jDb7qvm7tw3rDHEn3dSEot7Q6KbPcL6WzWJINVMCCmOgvq9gKHgE6Y5q5EgZ5rxiXyuO27ndzcbxaor4PIaiSzHO9+AJQ7p2zDLP+kG4nKVTBX0l9VoKiYFhIpIhpbigi3jyLDMDRiWpwTWZC6P8/RXfZg/lc5ADOuM2DM8oXPpZuqOa/g31LWQOSCuEnQ1G16vbLgipSPpgAc7jYWD5cywhG9dLkiKaZDh5x0meLM2RoAgz6eAnQfTTqJ68OM9o9yXjubEedsNpNRAr9/DXMd+fbh10W2vbvL5HCNB3lic3anehhR9le7PLuEKxg654wXt3KM2PZGVWbotIyBK0CvGzqGkppvwT23QdDDqSdkWuGQIhGQ0xBOdYkwebycxP5wwPUmObG+mymQ1Be2BXvmghttsiJdKlt4CVSYOJUMus6kU32G95hdTgKblsX4J1Of2i1nYsjyMKh3k945tqXwQrIsxOOQug0oIkz24zlLaOaQcorWtJ6Y1HPaZKpVIFUEF0y8Uq/O4oB2bOYC6WDUQfpj7nRG6xbi+BeBS84m1ttCEk4g="
|
||||
matrix:
|
||||
- BUILD=deploy
|
||||
- BUILD=doc
|
||||
- BUILD=sonar
|
||||
- BUILD=coveralls
|
||||
- secure: "VezxV+VdmbmtrQYT8AZIyg41WBROxuxpumerkcubADF7V4wV6lwx9Rd2G6yAr0VuHCNUUhS4m+gPFIsuiQbAhyupiEkwhzUYqk1tF+LITlLLPegLypjiLmhJMwGUNuDSSsih1Icmg9FzrP4VyzgGn9pBjoG9QYj1civBZeGwg++e/XDYlHMXrpd/UEfMKVB71JwB0tle4fKJZSvblIqP62yvbBaKHx6A4+ZWzJV5Vps0DoIeNtKCNmNNloKZVHfjbsvqSjnMYUJzkOzyPkM822q41N/D+3IAufO16+jH/W0vAZeN0e4GXiN5W+CVkr2Gbh0FwkVQcI3bekaOIn45XLUMLKdf+JsWDPKz9RraHelR9YxL5GoJ7ntwvmucxw0p8EVyJ/xLk/pBCP8iHq0Jb8//js25XHgxzzAWI37MErPAAGgTKZAVdAN0mGXbe63tWmwaBlEbK8h2A8di6abW5x6YHTkTo2BRlHUSTU8dE3VqTnpSkne5n1SlEa4g1Bci3J45M0/pLmHV6yCxCM5BrVXS5ByaB61py/umSbpmdIBFV6TM1MaKK3lAucQrR+8To/vCbm8XqPyujJdOR+ENIuuDgEU/Yh5Hv5SAODekUYaCp4pjfGzFADHQWVNDxIOXrwBN4OfSiAvRc1x6HXndOmNI4QtOxheuCRFFthq8VZI="
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
include:
|
||||
- name: "linux - mvn deploy"
|
||||
os: linux
|
||||
dist: trusty
|
||||
sudo: false
|
||||
env: BUILD=deploy
|
||||
- name: "linux - build documentation"
|
||||
os: linux
|
||||
dist: trusty
|
||||
sudo: false
|
||||
env: BUILD=doc
|
||||
- name: "linux - run sonar"
|
||||
os: linux
|
||||
dist: trusty
|
||||
sudo: false
|
||||
env: BUILD=sonar
|
||||
- name: "linux - run coveralls"
|
||||
os: linux
|
||||
dist: trusty
|
||||
sudo: false
|
||||
env: BUILD=coveralls
|
||||
- name: "macosx - mvn verify"
|
||||
os: osx
|
||||
env: BUILD=deploy
|
||||
|
||||
before_install:
|
||||
- wget https://github.com/sormuras/bach/raw/master/install-jdk.sh
|
||||
- bash .travis/setup-secrets.sh
|
||||
- bash .travis/configure-maven.sh
|
||||
# Install OracleJDK 10 - see https://sormuras.github.io/blog/2018-03-20-jdk-matrix.html
|
||||
install: . ./install-jdk.sh -F 10 -L BCL
|
||||
- rvm install 2.4.1
|
||||
- rvm use 2.4.1
|
||||
# Install OpenJDK 11 - see https://sormuras.github.io/blog/2018-03-20-jdk-matrix.html
|
||||
install:
|
||||
- . ./install-jdk.sh -F 11 -L GPL -W $HOME/jdk
|
||||
- gem install bundler
|
||||
- bundle install --with=release_notes_preprocessing
|
||||
before_script: true
|
||||
script: source .travis/build-$BUILD.sh
|
||||
after_success: true
|
||||
@@ -48,7 +70,7 @@ deploy:
|
||||
on:
|
||||
tags: true
|
||||
repo: pmd/pmd
|
||||
condition: "${TRAVIS_SECURE_ENV_VARS} = true && ${BUILD} != sonar"
|
||||
condition: "${TRAVIS_SECURE_ENV_VARS} = true && ${BUILD} != sonar && ${BUILD} != coveralls"
|
||||
after_deploy: bash .travis/release.sh
|
||||
|
||||
notifications:
|
||||
@@ -67,7 +89,9 @@ notifications:
|
||||
cache:
|
||||
directories:
|
||||
- "$HOME/.m2"
|
||||
|
||||
- vendor/bundle
|
||||
- "$HOME/jdk"
|
||||
- "$HOME/.rvm/"
|
||||
|
||||
# Secure Keys, that need to be set for snapshot builds
|
||||
#
|
||||
@@ -79,7 +103,6 @@ cache:
|
||||
# PMD_SF_USER - the sourceforge user, which is used to upload created binaries to sf files section. Note: an ssh key is
|
||||
# required. See "before_install".
|
||||
#
|
||||
#
|
||||
# Secure Keys, that need to be set for releases:
|
||||
#
|
||||
# PMD_SF_APIKEY - used to make the new release the default file in the files section. See https://sourceforge.net/auth/preferences/
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<ruleset name="All Java Rules"
|
||||
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
|
||||
<description>Every java rule in PMD which is used for the regression tests with pmdtester</description>
|
||||
|
||||
<rule ref="category/java/bestpractices.xml" />
|
||||
<rule ref="category/java/codestyle.xml" />
|
||||
<rule ref="category/java/design.xml" />
|
||||
<rule ref="category/java/documentation.xml" />
|
||||
<rule ref="category/java/errorprone.xml" />
|
||||
<rule ref="category/java/multithreading.xml" />
|
||||
<rule ref="category/java/performance.xml" />
|
||||
<rule ref="category/java/security.xml" />
|
||||
|
||||
</ruleset>
|
||||
@@ -4,7 +4,7 @@ set -e
|
||||
source .travis/logger.sh
|
||||
source .travis/common-functions.sh
|
||||
|
||||
VERSION=$(./mvnw -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec | tail -1)
|
||||
VERSION=$(./mvnw -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec)
|
||||
log_info "Building PMD Coveralls.io report ${VERSION} on branch ${TRAVIS_BRANCH}"
|
||||
|
||||
if ! travis_isPush; then
|
||||
@@ -12,17 +12,12 @@ if ! travis_isPush; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#
|
||||
# for java9: enable all modules.
|
||||
# coveralls plugin seems to need java.xml.bind module
|
||||
echo "MAVEN_OPTS='-Xms1g -Xmx1g --add-modules java.se.ee'" > ${HOME}/.mavenrc
|
||||
|
||||
(
|
||||
# disable fast fail, exit immediately, in this subshell
|
||||
set +e
|
||||
|
||||
./mvnw clean install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
|
||||
./mvnw test jacoco:report coveralls:report -Pcoveralls -B -V
|
||||
./mvnw package jacoco:report coveralls:report -Pcoveralls -B -V
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
log_error "Error creating coveralls report"
|
||||
|
||||
+64
-6
@@ -14,7 +14,11 @@ function push_docs() {
|
||||
git config user.name "Travis CI (pmd-bot)"
|
||||
git config user.email "andreas.dangel+pmd-bot@adangel.org"
|
||||
git add -A docs
|
||||
git commit -m "Update documentation"
|
||||
MSG="Update documentation
|
||||
|
||||
TRAVIS_JOB_NUMBER=${TRAVIS_JOB_NUMBER}
|
||||
TRAVIS_COMMIT_RANGE=${TRAVIS_COMMIT_RANGE}"
|
||||
git commit -m "$MSG"
|
||||
git push git@github.com:pmd/pmd.git HEAD:master
|
||||
log_success "Successfully pushed docs update"
|
||||
else
|
||||
@@ -23,16 +27,41 @@ function push_docs() {
|
||||
fi
|
||||
}
|
||||
|
||||
function upload_baseline() {
|
||||
log_info "Generating and uploading baseline for pmdtester..."
|
||||
cd ..
|
||||
pmdtester -m single -r ./pmd -p ${TRAVIS_BRANCH} -pc ./pmd/.travis/all-java.xml -l ./pmd/.travis/project-list.xml -f
|
||||
cd target/reports
|
||||
BRANCH_FILENAME="${TRAVIS_BRANCH/\//_}"
|
||||
zip -q -r ${BRANCH_FILENAME}-baseline.zip ${BRANCH_FILENAME}/
|
||||
rsync -avh ${BRANCH_FILENAME}-baseline.zip ${PMD_SF_USER}@web.sourceforge.net:/home/frs/project/pmd/pmd-regression-tester/
|
||||
if [ $? -ne 0 ]; then
|
||||
log_error "Error while uploading ${BRANCH_FILENAME}-baseline.zip to sourceforge!"
|
||||
log_error "Please upload manually: https://sourceforge.net/projects/pmd/files/pmd-regression-tester/"
|
||||
else
|
||||
log_success "Successfully uploaded ${BRANCH_FILENAME}-baseline.zip to sourceforge"
|
||||
fi
|
||||
}
|
||||
|
||||
VERSION=$(./mvnw -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec | tail -1)
|
||||
VERSION=$(./mvnw -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec)
|
||||
log_info "Building PMD ${VERSION} on branch ${TRAVIS_BRANCH}"
|
||||
|
||||
MVN_BUILD_FLAGS="-B -V"
|
||||
|
||||
if travis_isPullRequest; then
|
||||
if travis_isOSX; then
|
||||
|
||||
log_info "The build is running on OSX"
|
||||
./mvnw verify $MVN_BUILD_FLAGS
|
||||
|
||||
elif travis_isPullRequest; then
|
||||
|
||||
log_info "This is a pull-request build"
|
||||
./mvnw verify $MVN_BUILD_FLAGS
|
||||
(
|
||||
set +e
|
||||
log_info "Running danger"
|
||||
bundle exec danger --verbose
|
||||
)
|
||||
|
||||
elif travis_isPush; then
|
||||
|
||||
@@ -63,12 +92,41 @@ elif travis_isPush; then
|
||||
if [ $? -ne 0 ]; then
|
||||
log_error "Error while uploading pmd-*-${VERSION}.zip to sourceforge!"
|
||||
log_error "Please upload manually: https://sourceforge.net/projects/pmd/files/pmd/"
|
||||
else
|
||||
log_success "Successfully uploaded pmd-*-${VERSION}.zip to sourceforge"
|
||||
fi
|
||||
rsync -avh docs/pages/release_notes.md ${PMD_SF_USER}@web.sourceforge.net:/home/frs/project/pmd/pmd/${VERSION}/ReadMe.md
|
||||
if [ $? -ne 0 ]; then
|
||||
|
||||
)
|
||||
|
||||
( # UPLOAD RELEASE NOTES TO SOURCEFORGE
|
||||
|
||||
# This handler is called if any command fails
|
||||
function release_notes_fail() {
|
||||
log_error "Error while uploading release_notes.md as ReadMe.md to sourceforge!"
|
||||
log_error "Please upload manually: https://sourceforge.net/projects/pmd/files/pmd/"
|
||||
fi
|
||||
}
|
||||
|
||||
# exit subshell after trap
|
||||
set -e
|
||||
trap release_notes_fail ERR
|
||||
|
||||
RELEASE_NOTES_TMP=$(mktemp -t)
|
||||
|
||||
.travis/render_release_notes.rb docs/pages/release_notes.md | tail -n +6 > "$RELEASE_NOTES_TMP"
|
||||
|
||||
rsync -avh "$RELEASE_NOTES_TMP" ${PMD_SF_USER}@web.sourceforge.net:/home/frs/project/pmd/pmd/${VERSION}/ReadMe.md
|
||||
|
||||
log_success "Successfully uploaded release_notes.md as ReadMe.md to sourceforge"
|
||||
|
||||
)
|
||||
|
||||
|
||||
(
|
||||
# disable fast fail, exit immediately, in this subshell
|
||||
set +e
|
||||
|
||||
upload_baseline
|
||||
|
||||
true
|
||||
)
|
||||
|
||||
|
||||
+11
-2
@@ -4,7 +4,7 @@ set -e
|
||||
source .travis/logger.sh
|
||||
source .travis/common-functions.sh
|
||||
|
||||
VERSION=$(./mvnw -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec | tail -1)
|
||||
VERSION=$(./mvnw -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec)
|
||||
log_info "Building PMD Documentation ${VERSION} on branch ${TRAVIS_BRANCH}"
|
||||
|
||||
if ! travis_isPush; then
|
||||
@@ -25,6 +25,8 @@ echo -e "\n\n"
|
||||
log_info "Creating pmd-doc archive..."
|
||||
mv _site pmd-doc-${VERSION}
|
||||
zip -qr pmd-doc-${VERSION}.zip pmd-doc-${VERSION}/
|
||||
log_success "Successfully created pmd-doc-${VERSION}.zip:"
|
||||
ls -lh pmd-doc-${VERSION}.zip
|
||||
|
||||
(
|
||||
# disable fast fail, exit immediately, in this subshell
|
||||
@@ -37,6 +39,8 @@ zip -qr pmd-doc-${VERSION}.zip pmd-doc-${VERSION}/
|
||||
if [ $? -ne 0 ]; then
|
||||
log_error "Couldn't upload pmd-doc-${VERSION}.zip!"
|
||||
log_error "Please upload manually: https://sourceforge.net/projects/pmd/files/pmd/"
|
||||
else
|
||||
log_success "Successfully uploaded pmd-doc-${VERSION}.zip to sourceforge"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -59,6 +63,7 @@ zip -qr pmd-doc-${VERSION}.zip pmd-doc-${VERSION}/
|
||||
|
||||
#
|
||||
# Push the generated site to gh-pages branch
|
||||
# only for snapshot builds from branch master
|
||||
#
|
||||
if [[ "${VERSION}" == *-SNAPSHOT && "${TRAVIS_BRANCH}" == "master" ]] && has_docs_change; then
|
||||
echo -e "\n\n"
|
||||
@@ -73,7 +78,11 @@ if [[ "${VERSION}" == *-SNAPSHOT && "${TRAVIS_BRANCH}" == "master" ]] && has_doc
|
||||
git config user.name "Travis CI (pmd-bot)"
|
||||
git config user.email "andreas.dangel+pmd-bot@adangel.org"
|
||||
git add -A
|
||||
git commit -q -m "Update documentation"
|
||||
MSG="Update documentation
|
||||
|
||||
TRAVIS_JOB_NUMBER=${TRAVIS_JOB_NUMBER}
|
||||
TRAVIS_COMMIT_RANGE=${TRAVIS_COMMIT_RANGE}"
|
||||
git commit -q -m "$MSG"
|
||||
git push git@github.com:pmd/pmd.git HEAD:gh-pages
|
||||
log_success "Successfully pushed site to https://pmd.github.io/pmd/"
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@ set -e
|
||||
source .travis/logger.sh
|
||||
source .travis/common-functions.sh
|
||||
|
||||
VERSION=$(./mvnw -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec | tail -1)
|
||||
VERSION=$(./mvnw -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec)
|
||||
log_info "Building PMD Sonar ${VERSION} on branch ${TRAVIS_BRANCH}"
|
||||
|
||||
if ! travis_isPush; then
|
||||
@@ -12,17 +12,17 @@ if ! travis_isPush; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#
|
||||
# for java9: enable all modules.
|
||||
# sonar plugin seems to need java.xml.bind module
|
||||
echo "MAVEN_OPTS='-Xms1g -Xmx1g --add-modules java.se.ee'" > ${HOME}/.mavenrc
|
||||
|
||||
(
|
||||
# for sonar, we need to use java10, until sonarjava 5.8.0 is released (Sept. 2018)
|
||||
JAVA_HOME=$(bash ./install-jdk.sh -F 10 -L GPL -W $HOME/jdk --emit-java-home | tail --lines 1)
|
||||
export JAVA_HOME
|
||||
export PATH=${JAVA_HOME}/bin:$PATH
|
||||
|
||||
# disable fast fail, exit immediately, in this subshell
|
||||
set +e
|
||||
|
||||
# Run the build
|
||||
./mvnw clean org.jacoco:jacoco-maven-plugin:prepare-agent package sonar:sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${SONAR_TOKEN} -B -V
|
||||
./mvnw clean package sonar:sonar -Dsonar.login=${SONAR_TOKEN} -Psonar -B -V
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
log_error "Error updating sonar..."
|
||||
|
||||
@@ -10,6 +10,7 @@ echo "TRAVIS_SECURE_ENV_VARS: ${TRAVIS_SECURE_ENV_VARS}"
|
||||
echo "TRAVIS_BRANCH: ${TRAVIS_BRANCH}"
|
||||
echo "TRAVIS_TAG: ${TRAVIS_TAG}"
|
||||
echo "TRAVIS_ALLOW_FAILURE: ${TRAVIS_ALLOW_FAILURE}"
|
||||
echo "TRAVIS_OS_NAME: ${TRAVIS_OS_NAME}"
|
||||
|
||||
function travis_isPullRequest() {
|
||||
if [ "${TRAVIS_REPO_SLUG}" != "pmd/pmd" ] || [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then
|
||||
@@ -27,6 +28,14 @@ function travis_isPush() {
|
||||
fi
|
||||
}
|
||||
|
||||
function travis_isOSX() {
|
||||
if [[ $TRAVIS_OS_NAME == 'osx' ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function has_docs_change() {
|
||||
if [[ $(git diff --name-only ${TRAVIS_COMMIT_RANGE}) = *"docs/"* ]]; then
|
||||
log_info "Checking for changes in docs/ (TRAVIS_COMMIT_RANGE=${TRAVIS_COMMIT_RANGE}): changes found"
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<projectlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="projectlist_1_0_0.xsd">
|
||||
<description>Standard Projects</description>
|
||||
|
||||
<project>
|
||||
<name>checkstyle</name>
|
||||
<type>git</type>
|
||||
<connection>https://github.com/checkstyle/checkstyle</connection>
|
||||
<tag>checkstyle-8.10</tag>
|
||||
</project>
|
||||
|
||||
<project>
|
||||
<name>spring-framework</name>
|
||||
<type>git</type>
|
||||
<connection>https://github.com/spring-projects/spring-framework</connection>
|
||||
<tag>v5.0.6.RELEASE</tag>
|
||||
</project>
|
||||
|
||||
<!---<project>
|
||||
<name>openjdk10</name>
|
||||
<type>hg</type>
|
||||
<connection>http://hg.openjdk.java.net/jdk10/jdk10/jdk</connection>
|
||||
<webview-url>http://hg.openjdk.java.net/jdk10/jdk10/jdk/file/777356696811</webview-url>
|
||||
</project> -->
|
||||
</projectlist>
|
||||
+10
-4
@@ -28,11 +28,13 @@ if [ "${BUILD}" = "deploy" ]; then
|
||||
true
|
||||
)
|
||||
|
||||
# renders, and skips the first 6 lines - the Jekyll front-matter
|
||||
RENDERED_RELEASE_NOTES=$(bundle exec .travis/render_release_notes.rb docs/pages/release_notes.md | tail -n +6)
|
||||
|
||||
# Assumes, the release has already been created by travis github releases provider
|
||||
RELEASE_ID=$(curl -s -H "Authorization: token ${GITHUB_OAUTH_TOKEN}" https://api.github.com/repos/pmd/pmd/releases/tags/pmd_releases/${RELEASE_VERSION}|jq ".id")
|
||||
RELEASE_NAME="PMD ${RELEASE_VERSION} ($(date -u +%d-%B-%Y))"
|
||||
RELEASE_BODY=$(tail -n +6 docs/pages/release_notes.md) # skips the first 6 lines - the heading 'PMD Release Notes'
|
||||
RELEASE_BODY="$RENDERED_RELEASE_NOTES"
|
||||
RELEASE_BODY="${RELEASE_BODY//'\'/\\\\}"
|
||||
RELEASE_BODY="${RELEASE_BODY//$'\r'/}"
|
||||
RELEASE_BODY="${RELEASE_BODY//$'\n'/\\r\\n}"
|
||||
@@ -48,13 +50,14 @@ log_info "Updating release at https://api.github.com/repos/pmd/pmd/releases/${RE
|
||||
|
||||
RESPONSE=$(curl -i -s -H "Authorization: token ${GITHUB_OAUTH_TOKEN}" -H "Content-Type: application/json" --data "@release-edit-request.json" -X PATCH https://api.github.com/repos/pmd/pmd/releases/${RELEASE_ID})
|
||||
if [[ "$RESPONSE" != *"HTTP/1.1 200"* ]]; then
|
||||
log_error "Github Request failed!"
|
||||
echo "Request:"
|
||||
cat release-edit-request.json
|
||||
echo
|
||||
echo "Response:"
|
||||
echo "$RESPONSE"
|
||||
else
|
||||
echo "Update OK"
|
||||
log_success "Update OK"
|
||||
fi
|
||||
|
||||
fi
|
||||
@@ -76,7 +79,9 @@ mkdir pmd.github.io
|
||||
git remote add origin git@github.com:pmd/pmd.github.io.git
|
||||
echo "latest/" > .git/info/sparse-checkout
|
||||
git pull --depth=1 origin master
|
||||
rsync -a ../docs/pmd-doc-${RELEASE_VERSION}/ pmd-${RELEASE_VERSION}/
|
||||
log_info "Copying documentation from ../docs/pmd-doc-${RELEASE_VERSION}/ ..."
|
||||
rsync -ah --stats ../docs/pmd-doc-${RELEASE_VERSION}/ pmd-${RELEASE_VERSION}/
|
||||
git status
|
||||
git add pmd-${RELEASE_VERSION}
|
||||
git commit -q -m "Added pmd-${RELEASE_VERSION}"
|
||||
|
||||
@@ -85,6 +90,7 @@ mkdir pmd.github.io
|
||||
git add latest
|
||||
git commit -q -m "Copying pmd-${RELEASE_VERSION} to latest"
|
||||
|
||||
log_info "Generating sitemap.xml"
|
||||
../.travis/sitemap_generator.sh > sitemap.xml
|
||||
git add sitemap.xml
|
||||
git commit -q -m "Generated sitemap.xml"
|
||||
@@ -101,7 +107,7 @@ mkdir pmd.github.io
|
||||
|
||||
log_info "Uploading the new release to pmd.sourceforge.net which serves as an archive..."
|
||||
|
||||
travis_wait rsync -ah --stats pmd-doc-${VERSION}/ ${PMD_SF_USER}@web.sourceforge.net:/home/project-web/pmd/htdocs/pmd-${RELEASE_VERSION}/
|
||||
travis_wait rsync -ah --stats docs/pmd-doc-${RELEASE_VERSION}/ ${PMD_SF_USER}@web.sourceforge.net:/home/project-web/pmd/htdocs/pmd-${RELEASE_VERSION}/
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
log_error "Uploading documentation to pmd.sourceforge.net failed..."
|
||||
|
||||
Executable
+43
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
# Renders the release notes for Github releases,
|
||||
# and prints them to standard output
|
||||
|
||||
# Doesn't trim the header, which is done in shell
|
||||
|
||||
# Args:
|
||||
# ARGV[0] : location of the file to render
|
||||
|
||||
require "liquid"
|
||||
require "safe_yaml"
|
||||
|
||||
# include some custom liquid extensions
|
||||
require_relative "../docs/_plugins/rule_tag"
|
||||
require_relative "../docs/_plugins/tocmaker_block"
|
||||
require_relative "../docs/_plugins/custom_filters"
|
||||
|
||||
# explicitly setting safe mode to get rid of the warning
|
||||
SafeYAML::OPTIONS[:default_mode] = :safe
|
||||
|
||||
# START OF THE SCRIPT
|
||||
|
||||
unless ARGV.length == 1 && File.exists?(ARGV[0])
|
||||
print "\e[31m[ERROR] In #{$0}: The first arg must be a valid file name\e[0m"
|
||||
exit 1
|
||||
end
|
||||
|
||||
release_notes_file = ARGV[0]
|
||||
|
||||
liquid_env = {
|
||||
# wrap the config under a "site." namespace because that's how jekyll does it
|
||||
'site' => YAML.load_file("docs/_config.yml"),
|
||||
# This signals the links in {% rule %} tags that they should be rendered as absolute
|
||||
'is_release_notes_processor' => true
|
||||
}
|
||||
|
||||
|
||||
to_render = File.read(release_notes_file)
|
||||
rendered = Liquid::Template.parse(to_render).render(liquid_env)
|
||||
|
||||
|
||||
print(rendered)
|
||||
@@ -6,7 +6,9 @@
|
||||
<interactiveMode/>
|
||||
<usePluginRegistry/>
|
||||
<offline/>
|
||||
<pluginGroups/>
|
||||
<pluginGroups>
|
||||
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
|
||||
</pluginGroups>
|
||||
<servers>
|
||||
<server>
|
||||
<id>ossrh</id>
|
||||
|
||||
+3
-2
@@ -1,7 +1,8 @@
|
||||
# How to build PMD
|
||||
|
||||
PMD uses [Maven](https://maven.apache.org/) and requires [Java 9](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
|
||||
for building.
|
||||
PMD uses [Maven](https://maven.apache.org/) and requires at least Java 10 for building.
|
||||
You can get Java 10 from [Oracle](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
|
||||
or from the [OpenJDK Project](http://jdk.java.net).
|
||||
|
||||
PMD uses the [maven wrapper](https://github.com/takari/maven-wrapper), so you can simply build PMD as following:
|
||||
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
require 'pmdtester'
|
||||
require 'time'
|
||||
require 'logger'
|
||||
|
||||
@logger = Logger.new(STDOUT)
|
||||
|
||||
def run_pmdtester
|
||||
Dir.chdir('..') do
|
||||
argv = ['-r', './pmd', '-b', "#{ENV['TRAVIS_BRANCH']}", '-p', 'FETCH_HEAD', '-m', 'online', '-a']
|
||||
begin
|
||||
runner = PmdTester::Runner.new(argv)
|
||||
@new_errors, @removed_errors, @new_violations, @removed_violations = runner.run
|
||||
upload_report
|
||||
rescue StandardError => e
|
||||
warn("Running pmdtester failed, this message is mainly used to remind the maintainers of PMD.")
|
||||
@logger.error "Running pmdtester failed: #{e.inspect}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def upload_report
|
||||
Dir.chdir('target/reports') do
|
||||
tar_filename = "pr-#{ENV['TRAVIS_PULL_REQUEST']}-diff-report-#{Time.now.strftime("%Y-%m-%dT%H-%M-%SZ")}.tar"
|
||||
unless Dir.exist?('diff/')
|
||||
message("No java rules are changed!", sticky: true)
|
||||
return
|
||||
end
|
||||
|
||||
`tar -cf #{tar_filename} diff/`
|
||||
report_url = `curl -u #{ENV['CHUNK_TOKEN']} -T #{tar_filename} chunk.io`
|
||||
if $?.success?
|
||||
@logger.info "Successfully uploaded #{tar_filename} to chunk.io"
|
||||
|
||||
# set value of sticky to true and the message is kept after new commits are submited to the PR
|
||||
message("This changeset introduces #{@new_violations} new violations and #{@new_errors} new errors,\n" +
|
||||
"removes #{@removed_violations} violations and #{@removed_errors} errors. [Full report](#{report_url.chomp}/diff/index.html)", sticky: true)
|
||||
else
|
||||
@logger.error "Error while uploading #{tar_filename} to chunk.io: #{report_url}"
|
||||
warn("Uploading the diff report failed, this message is mainly used to remind the maintainers of PMD.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Perform regression testing
|
||||
can_merge = github.pr_json['mergeable']
|
||||
if can_merge
|
||||
run_pmdtester
|
||||
else
|
||||
warn("This PR cannot be merged yet.", sticky: false)
|
||||
end
|
||||
|
||||
# vim: syntax=ruby
|
||||
@@ -0,0 +1,14 @@
|
||||
source 'https://rubygems.org/'
|
||||
|
||||
gem 'pmdtester', :git => 'https://github.com/pmd/pmd-regression-tester.git'
|
||||
gem 'danger', '~> 5.6', '>= 5.6'
|
||||
|
||||
# This group is only needed for rendering release notes
|
||||
# this happens during release (.travis/release.sh and do-release.sh)
|
||||
# but also during regular builds (.travis/build-deploy.sh)
|
||||
group :release_notes_preprocessing do
|
||||
gem 'liquid', '>=4.0.0'
|
||||
gem 'safe_yaml', '>=1.0'
|
||||
end
|
||||
|
||||
# vim: syntax=ruby
|
||||
+23
-37
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Make sure, everything is English...
|
||||
export LANG=C.UTF8
|
||||
export LANG=C.UTF-8
|
||||
|
||||
# verify the current directory
|
||||
if [ ! -f pom.xml -o ! -d ../pmd.github.io ]; then
|
||||
@@ -66,21 +66,24 @@ export RELEASE_VERSION
|
||||
export DEVELOPMENT_VERSION
|
||||
export CURRENT_BRANCH
|
||||
|
||||
RELEASE_RULESET="pmd-core/src/main/resources/rulesets/releases/${RELEASE_VERSION//\./}.xml"
|
||||
|
||||
echo "* Update version/release info in **docs/pages/release_notes.md**."
|
||||
echo
|
||||
echo " ## $(date -u +%d-%B-%Y) - ${RELEASE_VERSION}"
|
||||
echo
|
||||
# install bundles needed for rendering release notes
|
||||
bundle install --with=release_notes_preprocessing --path vendor/bundle
|
||||
|
||||
RELEASE_RULESET="pmd-core/src/main/resources/rulesets/releases/${RELEASE_VERSION//\./}.xml"
|
||||
export RELEASE_NOTES_POST="_posts/$(date -u +%Y-%m-%d)-PMD-${RELEASE_VERSION}.md"
|
||||
echo "Generating ../pmd.github.io/${RELEASE_NOTES_POST}..."
|
||||
NEW_RELEASE_NOTES=$(bundle exec .travis/render_release_notes.rb docs/pages/release_notes.md | tail -n +6)
|
||||
echo "${NEW_RELEASE_NOTES}" > ../pmd.github.io/${RELEASE_NOTES_POST}
|
||||
|
||||
echo "* Update date info in **docs/_config.yml**."
|
||||
echo " date: $(date -u +%d-%B-%Y)"
|
||||
echo
|
||||
echo "* Ensure all the new rules are listed in a the proper file:"
|
||||
echo "* Ensure all the new rules are listed in the proper file:"
|
||||
echo " ${RELEASE_RULESET}"
|
||||
echo
|
||||
echo "* Update **../pmd.github.io/_config.yml** to mention the new release"
|
||||
echo
|
||||
echo "* Add **../pmd.github.io/_posts/$(date -u +%Y-%m-%d)-PMD-${RELEASE_VERSION}.md"
|
||||
echo
|
||||
echo "Press enter to continue..."
|
||||
read
|
||||
echo "Committing current changes (pmd)"
|
||||
@@ -94,7 +97,7 @@ git commit -a -m "Prepare pmd release ${RELEASE_VERSION}"
|
||||
(
|
||||
echo "Committing current changes (pmd.github.io)"
|
||||
cd ../pmd.github.io
|
||||
git add _posts/$(date -u +%Y-%m-%d)-PMD-${RELEASE_VERSION}.md
|
||||
git add ${RELEASE_NOTES_POST}
|
||||
git commit -a -m "Prepare pmd release ${RELEASE_VERSION}"
|
||||
git push
|
||||
)
|
||||
@@ -109,18 +112,6 @@ echo
|
||||
echo "Tag has been pushed.... now check travis build: <https://travis-ci.org/pmd/pmd>"
|
||||
echo
|
||||
echo
|
||||
echo "Submit news to SF on <https://sourceforge.net/p/pmd/news/> page. You can use"
|
||||
echo "the following template:"
|
||||
echo
|
||||
cat <<EOF
|
||||
PMD ${RELEASE_VERSION} released
|
||||
|
||||
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F${RELEASE_VERSION}
|
||||
* Documentation: https://pmd.github.io/pmd-${RELEASE_VERSION}/
|
||||
|
||||
And Copy-Paste the release notes
|
||||
EOF
|
||||
echo
|
||||
echo "Press enter to continue..."
|
||||
read
|
||||
|
||||
@@ -128,7 +119,6 @@ echo
|
||||
echo "Check the milestone on github:"
|
||||
echo "<https://github.com/pmd/pmd/milestones>"
|
||||
echo " --> move any open issues to the next milestone, close the current milestone"
|
||||
echo " --> Maybe there are some milestones on sourceforge, too: <https://sourceforge.net/p/pmd/bugs/milestones>."
|
||||
echo
|
||||
echo
|
||||
echo "Prepare Next development version:"
|
||||
@@ -140,7 +130,6 @@ read
|
||||
|
||||
# update release_notes_old
|
||||
OLD_RELEASE_NOTES=$(tail -n +8 docs/pages/release_notes_old.md)
|
||||
NEW_RELEASE_NOTES=$(tail -n +6 docs/pages/release_notes.md)
|
||||
echo "$(head -n 7 docs/pages/release_notes_old.md)" > docs/pages/release_notes_old.md
|
||||
echo "$NEW_RELEASE_NOTES" >> docs/pages/release_notes_old.md
|
||||
echo >> docs/pages/release_notes_old.md
|
||||
@@ -154,18 +143,13 @@ permalink: pmd_release_notes.html
|
||||
keywords: changelog, release notes
|
||||
---
|
||||
|
||||
## ????? - ${DEVELOPMENT_VERSION}
|
||||
## {{ site.pmd.date }} - {{ site.pmd.version }}
|
||||
|
||||
The PMD team is pleased to announce PMD ${DEVELOPMENT_VERSION%-SNAPSHOT}.
|
||||
The PMD team is pleased to announce PMD {{ site.pmd.version }}.
|
||||
|
||||
This is a minor release.
|
||||
This is a {{ site.pmd.release_type }} release.
|
||||
|
||||
### Table Of Contents
|
||||
|
||||
* [New and noteworthy](#new-and-noteworthy)
|
||||
* [Fixed Issues](#fixed-issues)
|
||||
* [API Changes](#api-changes)
|
||||
* [External Contributions](#external-contributions)
|
||||
{% tocmaker is_release_notes_processor %}
|
||||
|
||||
### New and noteworthy
|
||||
|
||||
@@ -175,25 +159,28 @@ This is a minor release.
|
||||
|
||||
### External Contributions
|
||||
|
||||
{% endtocmaker %}
|
||||
|
||||
EOF
|
||||
|
||||
git commit -a -m "Prepare next development version"
|
||||
git push origin ${CURRENT_BRANCH}
|
||||
./mvwn -B release:clean
|
||||
./mvnw -B release:clean
|
||||
echo
|
||||
echo
|
||||
echo
|
||||
echo "Verify the new release on github: <https://github.com/pmd/pmd/releases/tag/pmd_releases/${RELEASE_VERSION}>"
|
||||
echo
|
||||
echo "* Submit news to SF on <https://sourceforge.net/p/pmd/news/> page. Use same text as in the email below."
|
||||
echo "* Send out an announcement mail to the mailing list:"
|
||||
echo
|
||||
echo "Send out an announcement mail to the mailing list:"
|
||||
echo "To: PMD Developers List <pmd-devel@lists.sourceforge.net>"
|
||||
echo "Subject: [ANNOUNCE] PMD ${RELEASE_VERSION} Released"
|
||||
echo
|
||||
echo " * Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F${RELEASE_VERSION}"
|
||||
echo " * Documentation: https://pmd.github.io/pmd-${RELEASE_VERSION}/"
|
||||
echo
|
||||
echo " And Copy-Paste the release notes"
|
||||
echo "$NEW_RELEASE_NOTES"
|
||||
echo
|
||||
echo
|
||||
echo
|
||||
@@ -203,4 +190,3 @@ echo "------------------------------------------"
|
||||
echo
|
||||
|
||||
|
||||
|
||||
+27
-28
@@ -13,10 +13,11 @@ GEM
|
||||
execjs
|
||||
coffee-script-source (1.11.1)
|
||||
colorator (1.1.0)
|
||||
commonmarker (0.17.9)
|
||||
commonmarker (0.17.11)
|
||||
ruby-enum (~> 0.5)
|
||||
concurrent-ruby (1.0.5)
|
||||
dnsruby (1.60.2)
|
||||
dnsruby (1.61.2)
|
||||
addressable (~> 2.5)
|
||||
em-websocket (0.5.1)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
@@ -26,29 +27,29 @@ GEM
|
||||
execjs (2.7.0)
|
||||
faraday (0.15.2)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ffi (1.9.23)
|
||||
ffi (1.9.25)
|
||||
forwardable-extended (2.6.0)
|
||||
gemoji (3.0.0)
|
||||
github-pages (186)
|
||||
github-pages (191)
|
||||
activesupport (= 4.2.10)
|
||||
github-pages-health-check (= 1.8.1)
|
||||
jekyll (= 3.7.3)
|
||||
jekyll-avatar (= 0.5.0)
|
||||
jekyll-avatar (= 0.6.0)
|
||||
jekyll-coffeescript (= 1.1.1)
|
||||
jekyll-commonmark-ghpages (= 0.1.5)
|
||||
jekyll-default-layout (= 0.1.4)
|
||||
jekyll-feed (= 0.9.3)
|
||||
jekyll-feed (= 0.10.0)
|
||||
jekyll-gist (= 1.5.0)
|
||||
jekyll-github-metadata (= 2.9.4)
|
||||
jekyll-mentions (= 1.3.0)
|
||||
jekyll-mentions (= 1.4.1)
|
||||
jekyll-optional-front-matter (= 0.3.0)
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-readme-index (= 0.2.0)
|
||||
jekyll-redirect-from (= 0.13.0)
|
||||
jekyll-redirect-from (= 0.14.0)
|
||||
jekyll-relative-links (= 0.5.3)
|
||||
jekyll-remote-theme (= 0.3.1)
|
||||
jekyll-sass-converter (= 1.5.2)
|
||||
jekyll-seo-tag (= 2.4.0)
|
||||
jekyll-seo-tag (= 2.5.0)
|
||||
jekyll-sitemap (= 1.2.0)
|
||||
jekyll-swiss (= 0.4.0)
|
||||
jekyll-theme-architect (= 0.1.1)
|
||||
@@ -65,12 +66,12 @@ GEM
|
||||
jekyll-theme-tactile (= 0.1.1)
|
||||
jekyll-theme-time-machine (= 0.1.1)
|
||||
jekyll-titles-from-headings (= 0.5.1)
|
||||
jemoji (= 0.9.0)
|
||||
kramdown (= 1.16.2)
|
||||
jemoji (= 0.10.1)
|
||||
kramdown (= 1.17.0)
|
||||
liquid (= 4.0.0)
|
||||
listen (= 3.1.5)
|
||||
mercenary (~> 0.3)
|
||||
minima (= 2.4.1)
|
||||
minima (= 2.5.0)
|
||||
nokogiri (>= 1.8.2, < 2.0)
|
||||
rouge (= 2.2.1)
|
||||
terminal-table (~> 1.4)
|
||||
@@ -80,7 +81,7 @@ GEM
|
||||
octokit (~> 4.0)
|
||||
public_suffix (~> 2.0)
|
||||
typhoeus (~> 1.3)
|
||||
html-pipeline (2.8.0)
|
||||
html-pipeline (2.8.4)
|
||||
activesupport (>= 2)
|
||||
nokogiri (>= 1.4)
|
||||
http_parser.rb (0.6.0)
|
||||
@@ -99,7 +100,7 @@ GEM
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 1.7, < 4)
|
||||
safe_yaml (~> 1.0)
|
||||
jekyll-avatar (0.5.0)
|
||||
jekyll-avatar (0.6.0)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-coffeescript (1.1.1)
|
||||
coffee-script (~> 2.2)
|
||||
@@ -113,15 +114,14 @@ GEM
|
||||
rouge (~> 2)
|
||||
jekyll-default-layout (0.1.4)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-feed (0.9.3)
|
||||
jekyll-feed (0.10.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-gist (1.5.0)
|
||||
octokit (~> 4.2)
|
||||
jekyll-github-metadata (2.9.4)
|
||||
jekyll (~> 3.1)
|
||||
octokit (~> 4.0, != 4.4.0)
|
||||
jekyll-mentions (1.3.0)
|
||||
activesupport (~> 4.0)
|
||||
jekyll-mentions (1.4.1)
|
||||
html-pipeline (~> 2.3)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-optional-front-matter (0.3.0)
|
||||
@@ -129,7 +129,7 @@ GEM
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-readme-index (0.2.0)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-redirect-from (0.13.0)
|
||||
jekyll-redirect-from (0.14.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-relative-links (0.5.3)
|
||||
jekyll (~> 3.3)
|
||||
@@ -138,7 +138,7 @@ GEM
|
||||
rubyzip (>= 1.2.1, < 3.0)
|
||||
jekyll-sass-converter (1.5.2)
|
||||
sass (~> 3.4)
|
||||
jekyll-seo-tag (2.4.0)
|
||||
jekyll-seo-tag (2.5.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-sitemap (1.2.0)
|
||||
jekyll (~> 3.3)
|
||||
@@ -187,12 +187,11 @@ GEM
|
||||
jekyll (~> 3.3)
|
||||
jekyll-watch (2.0.0)
|
||||
listen (~> 3.0)
|
||||
jemoji (0.9.0)
|
||||
activesupport (~> 4.0, >= 4.2.9)
|
||||
jemoji (0.10.1)
|
||||
gemoji (~> 3.0)
|
||||
html-pipeline (~> 2.2)
|
||||
jekyll (~> 3.0)
|
||||
kramdown (1.16.2)
|
||||
kramdown (1.17.0)
|
||||
liquid (4.0.0)
|
||||
listen (3.1.5)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
@@ -200,15 +199,15 @@ GEM
|
||||
ruby_dep (~> 1.2)
|
||||
mercenary (0.3.6)
|
||||
mini_portile2 (2.3.0)
|
||||
minima (2.4.1)
|
||||
minima (2.5.0)
|
||||
jekyll (~> 3.5)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
minitest (5.11.3)
|
||||
multipart-post (2.0.0)
|
||||
nokogiri (1.8.2)
|
||||
nokogiri (1.8.4)
|
||||
mini_portile2 (~> 2.3.0)
|
||||
octokit (4.9.0)
|
||||
octokit (4.11.0)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
pathutil (0.16.1)
|
||||
forwardable-extended (~> 2.6)
|
||||
@@ -220,9 +219,9 @@ GEM
|
||||
ruby-enum (0.7.2)
|
||||
i18n
|
||||
ruby_dep (1.5.0)
|
||||
rubyzip (1.2.1)
|
||||
rubyzip (1.2.2)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.5.6)
|
||||
sass (3.5.7)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
@@ -237,7 +236,7 @@ GEM
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (1.2.5)
|
||||
thread_safe (~> 0.1)
|
||||
unicode-display_width (1.3.3)
|
||||
unicode-display_width (1.4.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
repository: pmd/pmd
|
||||
|
||||
pmd:
|
||||
version: 6.5.0
|
||||
date: 2018-06-26
|
||||
version: 6.8.0
|
||||
date: 30-September-2018
|
||||
release_type: minor
|
||||
|
||||
output: web
|
||||
# this property is useful for conditional filtering of content that is separate from the PDF.
|
||||
|
||||
@@ -325,6 +325,9 @@ entries:
|
||||
- title: How PMD works
|
||||
url: /pmd_devdocs_how_pmd_works.html
|
||||
output: web, pdf
|
||||
- title: Pmdtester
|
||||
url: /pmd_devdocs_pmdtester.html
|
||||
output: web, pdf
|
||||
- title: null
|
||||
output: web, pdf
|
||||
subfolders:
|
||||
|
||||
@@ -6,15 +6,6 @@ $( document ).ready(function() {
|
||||
|
||||
$('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3,h4' });
|
||||
|
||||
/* this offset helps account for the space taken up by the floating toolbar. */
|
||||
$('#toc').on('click', 'a', function() {
|
||||
var target = $(this.getAttribute('href'))
|
||||
, scroll_target = target.offset().top
|
||||
|
||||
$(window).scrollTop(scroll_target - 10);
|
||||
return false
|
||||
})
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -68,6 +68,19 @@ module CustomFilters
|
||||
end
|
||||
end
|
||||
|
||||
# Append the suffix only if the condition argument is truthy
|
||||
def append_if(str, condition, suffix)
|
||||
if condition
|
||||
str + suffix
|
||||
else
|
||||
str
|
||||
end
|
||||
end
|
||||
|
||||
def append_unless(str, condition, suffix)
|
||||
append_if(str, !condition, suffix)
|
||||
end
|
||||
|
||||
def render_markdown(input)
|
||||
if input
|
||||
res = input
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
|
||||
|
||||
# Tag to reference a rule
|
||||
#
|
||||
# Usage:
|
||||
# {% rule "java/codestyle/LinguisticNaming" %} works from anywhere
|
||||
# If inside the doc page of a ruleset/category, the language and
|
||||
# category segment can be dropped, they're taken to be the same.
|
||||
#
|
||||
# That means rule descriptions can also reference rules e.g. by simply
|
||||
# saying {% rule AvoidFinalLocalVars %} if they're in the same category
|
||||
# This could allow deprecated rule notices to link to the replacement rule
|
||||
|
||||
class RuleTag < Liquid::Tag
|
||||
def initialize(tag_name, rule_ref, tokens)
|
||||
super
|
||||
|
||||
if %r!(?:(?:(\w+)/)?(\w+)/)?(\w+)! =~ rule_ref
|
||||
|
||||
@lang_name = $1
|
||||
@category_name = $2
|
||||
@rule_name = $3
|
||||
|
||||
else
|
||||
fail "Invalid rule reference format"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def render(context)
|
||||
|
||||
|
||||
|
||||
if /pmd_rules_(\w+)_(\w+)\.html/ =~ context["page.permalink"]
|
||||
# If we're in a page describing a ruleset,
|
||||
# omitted language or category are taken to be that of this page
|
||||
@lang_name = @lang_name || $1
|
||||
@category_name = @category_name || $2
|
||||
end
|
||||
|
||||
|
||||
unless @category_name
|
||||
fail "no category for rule reference, and no implicit category name available"
|
||||
end
|
||||
|
||||
unless @lang_name
|
||||
fail "no language for rule reference, and no implicit language name available"
|
||||
end
|
||||
|
||||
|
||||
url_prefix = ""
|
||||
# This is passed from the release notes processing script
|
||||
# When generating links for the release notes, the links should be absolute
|
||||
if context["is_release_notes_processor"]
|
||||
url_prefix = "https://pmd.github.io/pmd-#{context["site.pmd.version"]}/"
|
||||
end
|
||||
|
||||
markup_link(@rule_name, url_prefix + relativelink(@lang_name, @category_name, @rule_name))
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def relativelink(lang, cat, rname)
|
||||
"pmd_rules_#{lang}_#{cat}.html##{rname.downcase}"
|
||||
end
|
||||
|
||||
def markup_link(rname, link)
|
||||
"[`#{rname}`](#{link})"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Liquid::Template.register_tag('rule', RuleTag)
|
||||
@@ -0,0 +1,60 @@
|
||||
# Generates a table of contents based on markdown headers in the body
|
||||
#
|
||||
# The block has 2 optional args:
|
||||
# * A variable name. If provided, the toc will only be generated if the var is true
|
||||
# * An integer, describing the maximum depth at which headers are added to the toc
|
||||
|
||||
class TocMakerBlock < Liquid::Block
|
||||
|
||||
def initialize(tag_name, arg, tokens)
|
||||
super
|
||||
|
||||
condition, depth = arg.split
|
||||
|
||||
@max_depth = depth.to_s.empty? ? 100 : depth.to_i
|
||||
@condition_var = condition.strip unless condition.to_s.empty?
|
||||
|
||||
@body = tokens
|
||||
end
|
||||
|
||||
def to_internal_link(header)
|
||||
url = header.downcase.gsub(/\s+/, "-")
|
||||
|
||||
"[#{header}](##{url})"
|
||||
end
|
||||
|
||||
def render(context)
|
||||
|
||||
contents = @body.render(context)
|
||||
|
||||
if @condition_var && !context[@condition_var]
|
||||
# If the condition is false, the toc is not generated
|
||||
return contents
|
||||
end
|
||||
|
||||
headers = contents.lines.map {|l|
|
||||
if /^(#+)\s+(\S.*)$/ =~ l
|
||||
[$1.length, $2]
|
||||
end
|
||||
}.compact
|
||||
|
||||
min_indent = headers.map {|t| t[0]}.min
|
||||
|
||||
headers = headers.map {|t|
|
||||
actual_depth = t[0] - min_indent
|
||||
if actual_depth < @max_depth then
|
||||
|
||||
indent = " " * actual_depth
|
||||
|
||||
"#{indent}* #{to_internal_link(t[1])}"
|
||||
end
|
||||
}.compact
|
||||
|
||||
headers.unshift("### Table Of Contents\n")
|
||||
|
||||
headers.join("\n") + contents
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Liquid::Template.register_tag('tocmaker', TocMakerBlock)
|
||||
@@ -79,8 +79,8 @@ h4[id],
|
||||
h5[id],
|
||||
h6[id],
|
||||
dt[id]{
|
||||
padding-top: 60px;
|
||||
margin-top: -40px
|
||||
padding-top: 20px;
|
||||
margin-top: 0px
|
||||
}
|
||||
|
||||
body h1 {margin-top:40px;}
|
||||
|
||||
@@ -10,10 +10,9 @@ author: Tom Copeland, Xavier Le Vourch <xlv@users.sourceforge.net>
|
||||
|
||||
# Compiling PMD
|
||||
|
||||
* JDK 9 or higher
|
||||
* [Apache Maven](http://maven.apache.org) 3 or later.
|
||||
* JDK 10 or higher
|
||||
|
||||
{% include note.html content="While Java 9 is required for building, running PMD only requires Java 7 (or Java 8 for Apex)." %}
|
||||
{% include note.html content="While Java 10 is required for building, running PMD only requires Java 7 (or Java 8 for Apex and the Designer)." %}
|
||||
|
||||
You’ll need to either check out the source code or download the latest source release. Assuming you’ve got the latest source release, unzip it to a directory:
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
title: Pmdtester
|
||||
tags: [devdocs]
|
||||
permalink: pmd_devdocs_pmdtester.html
|
||||
author: Binguo Bao <djydewang@gmail.com>
|
||||
---
|
||||
|
||||
## Introduction
|
||||
Pmdtester is a regression testing tool that ensures no new problems and unexpected behaviors will be introduced to PMD after fixing an issue.
|
||||
It can also be used to verify, that new rules work as expected.It has been integrated into travis CI and is actually used automatically for PRs.
|
||||
Regression difference reports are commented back to the PR for the reviewer's information e.g. https://github.com/pmd/pmd/pull/1265#issuecomment-408945709
|
||||
|
||||
## Run pmdtester locally
|
||||
**Install pmdtester**
|
||||
|
||||
`gem install pmdtester --pre`
|
||||
|
||||
**Verifying your local changes and generate a diff-report locally**
|
||||
|
||||
`pmdtester -r YOUR_LOCAL_PMD_GIT_REPO_ROOT_DIR -b master -p YOUR_DEVELOPMENT_BRANCH`
|
||||
|
||||
The regression difference report is placed in the `YOUR_WORKING_DIR/target/reports/diff` directory.
|
||||
|
||||
For more documentation on pmdtester, see [README.rdoc](https://github.com/pmd/pmd-regression-tester/blob/master/README.rdoc)
|
||||
@@ -25,12 +25,9 @@ Make sure code is up to date and everything is committed and pushed with git:
|
||||
|
||||
### The Release Notes and docs
|
||||
|
||||
At a very minimum, the current date must be noted in the release notes and the download section. Also, the version
|
||||
must be adjusted. E.g. by removing "-SNAPSHOT".
|
||||
|
||||
You can find the release notes here: `docs/pages/release_notes.md`.
|
||||
|
||||
The date for the download section is to be entered in `docs/_config.yml`, e.g.
|
||||
The date and the version must be updated in `docs/_config.yml`, e.g.
|
||||
|
||||
```
|
||||
pmd:
|
||||
@@ -140,6 +137,7 @@ the following template:
|
||||
* Move version/release info from **docs/pages/release_notes.md** to **docs/pages/release_notes_old.md**.
|
||||
* Update version/release info in **docs/pages/release_notes.md**. Use the following template:
|
||||
|
||||
{%raw%}
|
||||
```
|
||||
---
|
||||
title: PMD Release Notes
|
||||
@@ -147,18 +145,13 @@ permalink: pmd_release_notes.html
|
||||
keywords: changelog, release notes
|
||||
---
|
||||
|
||||
## ????? - ${DEVELOPMENT_VERSION}
|
||||
## {{ site.pmd.date }} - {{ site.pmd.version }}
|
||||
|
||||
The PMD team is pleased to announce PMD ${DEVELOPMENT_VERSION%-SNAPSHOT}.
|
||||
The PMD team is pleased to announce PMD {{ site.pmd.version }}.
|
||||
|
||||
This is a bug fixing release.
|
||||
This is a {{ site.pmd.release_type }} release.
|
||||
|
||||
### Table Of Contents
|
||||
|
||||
* [New and noteworthy](#new-and-noteworthy)
|
||||
* [Fixed Issues](#fixed-issues)
|
||||
* [API Changes](#api-changes)
|
||||
* [External Contributions](#external-contributions)
|
||||
{% tocmaker %}
|
||||
|
||||
### New and noteworthy
|
||||
|
||||
@@ -168,7 +161,11 @@ This is a bug fixing release.
|
||||
|
||||
### External Contributions
|
||||
|
||||
{% endtocmaker %}
|
||||
|
||||
```
|
||||
{%endraw%}
|
||||
|
||||
|
||||
Commit and push
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ folder: pmd/rules
|
||||
* [IfElseStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifelsestmtsmustusebraces): Avoid using if..else statements without using surrounding braces. If the code formattingor indent...
|
||||
* [IfStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifstmtsmustusebraces): Avoid using if statements without using braces to surround the code block. If the codeformatting ...
|
||||
* [MethodNamingConventions](pmd_rules_apex_codestyle.html#methodnamingconventions): Method names should always begin with a lower case character, and should not contain underscores.
|
||||
* [OneDeclarationPerLine](pmd_rules_apex_codestyle.html#onedeclarationperline): Apex allows the use of several variables declaration of the same type on one line. However, itcan...
|
||||
* [VariableNamingConventions](pmd_rules_apex_codestyle.html#variablenamingconventions): A variable naming conventions rule - customize this to your liking. Currently, itchecks for fina...
|
||||
* [WhileLoopsMustUseBraces](pmd_rules_apex_codestyle.html#whileloopsmustusebraces): Avoid using 'while' statements without using braces to surround the code block. If the codeformat...
|
||||
|
||||
@@ -112,7 +113,7 @@ folder: pmd/rules
|
||||
|
||||
It contains the following rules:
|
||||
|
||||
[ApexBadCrypto](pmd_rules_apex_security.html#apexbadcrypto), [ApexCRUDViolation](pmd_rules_apex_security.html#apexcrudviolation), [ApexCSRF](pmd_rules_apex_security.html#apexcsrf), [ApexDangerousMethods](pmd_rules_apex_security.html#apexdangerousmethods), [ApexInsecureEndpoint](pmd_rules_apex_security.html#apexinsecureendpoint), [ApexOpenRedirect](pmd_rules_apex_security.html#apexopenredirect), [ApexSharingViolations](pmd_rules_apex_security.html#apexsharingviolations), [ApexSOQLInjection](pmd_rules_apex_security.html#apexsoqlinjection), [ApexSuggestUsingNamedCred](pmd_rules_apex_security.html#apexsuggestusingnamedcred), [ApexUnitTestClassShouldHaveAsserts](pmd_rules_apex_bestpractices.html#apexunittestclassshouldhaveasserts), [ApexUnitTestShouldNotUseSeeAllDataTrue](pmd_rules_apex_bestpractices.html#apexunittestshouldnotuseseealldatatrue), [ApexXSSFromEscapeFalse](pmd_rules_apex_security.html#apexxssfromescapefalse), [ApexXSSFromURLParam](pmd_rules_apex_security.html#apexxssfromurlparam), [AvoidDeeplyNestedIfStmts](pmd_rules_apex_design.html#avoiddeeplynestedifstmts), [AvoidDirectAccessTriggerMap](pmd_rules_apex_errorprone.html#avoiddirectaccesstriggermap), [AvoidDmlStatementsInLoops](pmd_rules_apex_performance.html#avoiddmlstatementsinloops), [AvoidGlobalModifier](pmd_rules_apex_bestpractices.html#avoidglobalmodifier), [AvoidHardcodingId](pmd_rules_apex_errorprone.html#avoidhardcodingid), [AvoidLogicInTrigger](pmd_rules_apex_bestpractices.html#avoidlogicintrigger), [AvoidNonExistentAnnotations](pmd_rules_apex_errorprone.html#avoidnonexistentannotations), [AvoidSoqlInLoops](pmd_rules_apex_performance.html#avoidsoqlinloops), [AvoidSoslInLoops](pmd_rules_apex_performance.html#avoidsoslinloops), [ClassNamingConventions](pmd_rules_apex_codestyle.html#classnamingconventions), [CyclomaticComplexity](pmd_rules_apex_design.html#cyclomaticcomplexity), [EmptyCatchBlock](pmd_rules_apex_errorprone.html#emptycatchblock), [EmptyIfStmt](pmd_rules_apex_errorprone.html#emptyifstmt), [EmptyStatementBlock](pmd_rules_apex_errorprone.html#emptystatementblock), [EmptyTryOrFinallyBlock](pmd_rules_apex_errorprone.html#emptytryorfinallyblock), [EmptyWhileStmt](pmd_rules_apex_errorprone.html#emptywhilestmt), [ExcessiveClassLength](pmd_rules_apex_design.html#excessiveclasslength), [ExcessiveParameterList](pmd_rules_apex_design.html#excessiveparameterlist), [ExcessivePublicCount](pmd_rules_apex_design.html#excessivepubliccount), [ForLoopsMustUseBraces](pmd_rules_apex_codestyle.html#forloopsmustusebraces), [IfElseStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifelsestmtsmustusebraces), [IfStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifstmtsmustusebraces), [MethodNamingConventions](pmd_rules_apex_codestyle.html#methodnamingconventions), [MethodWithSameNameAsEnclosingClass](pmd_rules_apex_errorprone.html#methodwithsamenameasenclosingclass), [NcssConstructorCount](pmd_rules_apex_design.html#ncssconstructorcount), [NcssMethodCount](pmd_rules_apex_design.html#ncssmethodcount), [NcssTypeCount](pmd_rules_apex_design.html#ncsstypecount), [StdCyclomaticComplexity](pmd_rules_apex_design.html#stdcyclomaticcomplexity), [TooManyFields](pmd_rules_apex_design.html#toomanyfields), [VariableNamingConventions](pmd_rules_apex_codestyle.html#variablenamingconventions), [WhileLoopsMustUseBraces](pmd_rules_apex_codestyle.html#whileloopsmustusebraces)
|
||||
[ApexBadCrypto](pmd_rules_apex_security.html#apexbadcrypto), [ApexCRUDViolation](pmd_rules_apex_security.html#apexcrudviolation), [ApexCSRF](pmd_rules_apex_security.html#apexcsrf), [ApexDangerousMethods](pmd_rules_apex_security.html#apexdangerousmethods), [ApexDoc](pmd_rules_apex_documentation.html#apexdoc), [ApexInsecureEndpoint](pmd_rules_apex_security.html#apexinsecureendpoint), [ApexOpenRedirect](pmd_rules_apex_security.html#apexopenredirect), [ApexSharingViolations](pmd_rules_apex_security.html#apexsharingviolations), [ApexSOQLInjection](pmd_rules_apex_security.html#apexsoqlinjection), [ApexSuggestUsingNamedCred](pmd_rules_apex_security.html#apexsuggestusingnamedcred), [ApexUnitTestClassShouldHaveAsserts](pmd_rules_apex_bestpractices.html#apexunittestclassshouldhaveasserts), [ApexUnitTestShouldNotUseSeeAllDataTrue](pmd_rules_apex_bestpractices.html#apexunittestshouldnotuseseealldatatrue), [ApexXSSFromEscapeFalse](pmd_rules_apex_security.html#apexxssfromescapefalse), [ApexXSSFromURLParam](pmd_rules_apex_security.html#apexxssfromurlparam), [AvoidDeeplyNestedIfStmts](pmd_rules_apex_design.html#avoiddeeplynestedifstmts), [AvoidDirectAccessTriggerMap](pmd_rules_apex_errorprone.html#avoiddirectaccesstriggermap), [AvoidDmlStatementsInLoops](pmd_rules_apex_performance.html#avoiddmlstatementsinloops), [AvoidGlobalModifier](pmd_rules_apex_bestpractices.html#avoidglobalmodifier), [AvoidHardcodingId](pmd_rules_apex_errorprone.html#avoidhardcodingid), [AvoidLogicInTrigger](pmd_rules_apex_bestpractices.html#avoidlogicintrigger), [AvoidNonExistentAnnotations](pmd_rules_apex_errorprone.html#avoidnonexistentannotations), [AvoidSoqlInLoops](pmd_rules_apex_performance.html#avoidsoqlinloops), [AvoidSoslInLoops](pmd_rules_apex_performance.html#avoidsoslinloops), [ClassNamingConventions](pmd_rules_apex_codestyle.html#classnamingconventions), [CyclomaticComplexity](pmd_rules_apex_design.html#cyclomaticcomplexity), [EmptyCatchBlock](pmd_rules_apex_errorprone.html#emptycatchblock), [EmptyIfStmt](pmd_rules_apex_errorprone.html#emptyifstmt), [EmptyStatementBlock](pmd_rules_apex_errorprone.html#emptystatementblock), [EmptyTryOrFinallyBlock](pmd_rules_apex_errorprone.html#emptytryorfinallyblock), [EmptyWhileStmt](pmd_rules_apex_errorprone.html#emptywhilestmt), [ExcessiveClassLength](pmd_rules_apex_design.html#excessiveclasslength), [ExcessiveParameterList](pmd_rules_apex_design.html#excessiveparameterlist), [ExcessivePublicCount](pmd_rules_apex_design.html#excessivepubliccount), [ForLoopsMustUseBraces](pmd_rules_apex_codestyle.html#forloopsmustusebraces), [IfElseStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifelsestmtsmustusebraces), [IfStmtsMustUseBraces](pmd_rules_apex_codestyle.html#ifstmtsmustusebraces), [MethodNamingConventions](pmd_rules_apex_codestyle.html#methodnamingconventions), [MethodWithSameNameAsEnclosingClass](pmd_rules_apex_errorprone.html#methodwithsamenameasenclosingclass), [NcssConstructorCount](pmd_rules_apex_design.html#ncssconstructorcount), [NcssMethodCount](pmd_rules_apex_design.html#ncssmethodcount), [NcssTypeCount](pmd_rules_apex_design.html#ncsstypecount), [OneDeclarationPerLine](pmd_rules_apex_codestyle.html#onedeclarationperline), [StdCyclomaticComplexity](pmd_rules_apex_design.html#stdcyclomaticcomplexity), [TooManyFields](pmd_rules_apex_design.html#toomanyfields), [VariableNamingConventions](pmd_rules_apex_codestyle.html#variablenamingconventions), [WhileLoopsMustUseBraces](pmd_rules_apex_codestyle.html#whileloopsmustusebraces)
|
||||
|
||||
* Empty Code (`rulesets/apex/empty.xml`):
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ permalink: pmd_rules_apex_codestyle.html
|
||||
folder: pmd/rules/apex
|
||||
sidebaractiveurl: /pmd_rules_apex.html
|
||||
editmepath: ../pmd-apex/src/main/resources/category/apex/codestyle.xml
|
||||
keywords: Code Style, ClassNamingConventions, IfElseStmtsMustUseBraces, IfStmtsMustUseBraces, ForLoopsMustUseBraces, MethodNamingConventions, VariableNamingConventions, WhileLoopsMustUseBraces
|
||||
keywords: Code Style, ClassNamingConventions, IfElseStmtsMustUseBraces, IfStmtsMustUseBraces, ForLoopsMustUseBraces, MethodNamingConventions, OneDeclarationPerLine, VariableNamingConventions, WhileLoopsMustUseBraces
|
||||
language: Apex
|
||||
---
|
||||
## ClassNamingConventions
|
||||
@@ -192,6 +192,52 @@ public class Foo {
|
||||
<rule ref="category/apex/codestyle.xml/MethodNamingConventions" />
|
||||
```
|
||||
|
||||
## OneDeclarationPerLine
|
||||
|
||||
**Since:** PMD 6.7.0
|
||||
|
||||
**Priority:** High (1)
|
||||
|
||||
Apex allows the use of several variables declaration of the same type on one line. However, it
|
||||
can lead to quite messy code. This rule looks for several declarations on the same line.
|
||||
|
||||
**This rule is defined by the following XPath expression:**
|
||||
``` xpath
|
||||
//VariableDeclarationStatements
|
||||
[count(VariableDeclaration) > 1]
|
||||
[$strictMode or count(distinct-values(VariableDeclaration/@BeginLine)) != count(VariableDeclaration)]
|
||||
|
|
||||
//FieldDeclarationStatements
|
||||
[count(FieldDeclaration) > 1]
|
||||
[$strictMode or count(distinct-values(FieldDeclaration/VariableExpression/@BeginLine)) != count(FieldDeclaration/VariableExpression)]
|
||||
```
|
||||
|
||||
**Example(s):**
|
||||
|
||||
``` java
|
||||
Integer a, b; // not recommended
|
||||
|
||||
Integer a,
|
||||
b; // ok by default, can be flagged setting the strictMode property
|
||||
|
||||
Integer a; // preferred approach
|
||||
Integer b;
|
||||
```
|
||||
|
||||
**This rule has the following properties:**
|
||||
|
||||
|Name|Default Value|Description|Multivalued|
|
||||
|----|-------------|-----------|-----------|
|
||||
|cc_categories|Style|Code Climate Categories|yes. Delimiter is '\|'.|
|
||||
|cc_remediation_points_multiplier|1|Code Climate Remediation Points multiplier|no|
|
||||
|cc_block_highlighting|false|Code Climate Block Highlighting|no|
|
||||
|strictMode|false|If true, mark combined declaration even if the declarations are on separate lines.|no|
|
||||
|
||||
**Use this rule by referencing it:**
|
||||
``` xml
|
||||
<rule ref="category/apex/codestyle.xml/OneDeclarationPerLine" />
|
||||
```
|
||||
|
||||
## VariableNamingConventions
|
||||
|
||||
**Since:** PMD 5.5.0
|
||||
|
||||
@@ -28,7 +28,7 @@ folder: pmd/rules
|
||||
* [JUnit4TestShouldUseBeforeAnnotation](pmd_rules_java_bestpractices.html#junit4testshouldusebeforeannotation): In JUnit 3, the setUp method was used to set up all data entities required in running tests. JUni...
|
||||
* [JUnit4TestShouldUseTestAnnotation](pmd_rules_java_bestpractices.html#junit4testshouldusetestannotation): In JUnit 3, the framework executed all methods which started with the word test as a unit test. I...
|
||||
* [JUnitAssertionsShouldIncludeMessage](pmd_rules_java_bestpractices.html#junitassertionsshouldincludemessage): JUnit assertions should include an informative message - i.e., use the three-argument version of ...
|
||||
* [JUnitTestContainsTooManyAsserts](pmd_rules_java_bestpractices.html#junittestcontainstoomanyasserts): JUnit tests should not contain too many asserts. Many asserts are indicative of a complex test, ...
|
||||
* [JUnitTestContainsTooManyAsserts](pmd_rules_java_bestpractices.html#junittestcontainstoomanyasserts): Unit tests should not contain too many asserts. Many asserts are indicative of a complex test, fo...
|
||||
* [JUnitTestsShouldIncludeAssert](pmd_rules_java_bestpractices.html#junittestsshouldincludeassert): JUnit tests should include at least one assertion. This makes the tests more robust, and using a...
|
||||
* [JUnitUseExpected](pmd_rules_java_bestpractices.html#junituseexpected): In JUnit4, use the @Test(expected) annotation to denote tests that should throw exceptions.
|
||||
* [LooseCoupling](pmd_rules_java_bestpractices.html#loosecoupling): The use of implementation types (i.e., HashSet) as object references limits your ability to use a...
|
||||
@@ -63,7 +63,7 @@ folder: pmd/rules
|
||||
* [AtLeastOneConstructor](pmd_rules_java_codestyle.html#atleastoneconstructor): Each non-static class should declare at least one constructor.Classes with solely static members ...
|
||||
* [AvoidDollarSigns](pmd_rules_java_codestyle.html#avoiddollarsigns): Avoid using dollar signs in variable/method/class/interface names.
|
||||
* [AvoidFinalLocalVariable](pmd_rules_java_codestyle.html#avoidfinallocalvariable): Avoid using final local variables, turn them into fields.
|
||||
* [AvoidPrefixingMethodParameters](pmd_rules_java_codestyle.html#avoidprefixingmethodparameters): Prefixing parameters by 'in' or 'out' pollutes the name of the parameters and reduces code readab...
|
||||
* [AvoidPrefixingMethodParameters](pmd_rules_java_codestyle.html#avoidprefixingmethodparameters): <span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> Prefixing parameters by 'in' or 'out' pollutes the name of the parameters and reduces code readab...
|
||||
* [AvoidProtectedFieldInFinalClass](pmd_rules_java_codestyle.html#avoidprotectedfieldinfinalclass): Do not use protected fields in final classes since they cannot be subclassed.Clarify your intent ...
|
||||
* [AvoidProtectedMethodInFinalClassNotExtending](pmd_rules_java_codestyle.html#avoidprotectedmethodinfinalclassnotextending): Do not use protected methods in most final classes since they cannot be subclassed. This shouldon...
|
||||
* [AvoidUsingNativeCode](pmd_rules_java_codestyle.html#avoidusingnativecode): Unnecessary reliance on Java Native Interface (JNI) calls directly reduces application portabilit...
|
||||
@@ -79,20 +79,24 @@ folder: pmd/rules
|
||||
* [EmptyMethodInAbstractClassShouldBeAbstract](pmd_rules_java_codestyle.html#emptymethodinabstractclassshouldbeabstract): Empty or auto-generated methods in an abstract class should be tagged as abstract. This helps to ...
|
||||
* [ExtendsObject](pmd_rules_java_codestyle.html#extendsobject): No need to explicitly extend Object.
|
||||
* [FieldDeclarationsShouldBeAtStartOfClass](pmd_rules_java_codestyle.html#fielddeclarationsshouldbeatstartofclass): Fields should be declared at the top of the class, before any method declarations, constructors, ...
|
||||
* [FieldNamingConventions](pmd_rules_java_codestyle.html#fieldnamingconventions): Configurable naming conventions for field declarations. This rule reports variable declarations ...
|
||||
* [ForLoopShouldBeWhileLoop](pmd_rules_java_codestyle.html#forloopshouldbewhileloop): Some for loops can be simplified to while loops, this makes them more concise.
|
||||
* [ForLoopsMustUseBraces](pmd_rules_java_codestyle.html#forloopsmustusebraces): <span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> Avoid using 'for' statements without using curly braces. If the code formatting or indentation is...
|
||||
* [FormalParameterNamingConventions](pmd_rules_java_codestyle.html#formalparameternamingconventions): Configurable naming conventions for formal parameters of methods and lambdas. This rul...
|
||||
* [GenericsNaming](pmd_rules_java_codestyle.html#genericsnaming): Names for references to generic values should be limited to a single uppercase letter.
|
||||
* [IdenticalCatchBranches](pmd_rules_java_codestyle.html#identicalcatchbranches): Identical 'catch' branches use up vertical space and increase the complexity of code without ...
|
||||
* [IfElseStmtsMustUseBraces](pmd_rules_java_codestyle.html#ifelsestmtsmustusebraces): <span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> Avoid using if..else statements without using surrounding braces. If the code formatting or inden...
|
||||
* [IfStmtsMustUseBraces](pmd_rules_java_codestyle.html#ifstmtsmustusebraces): <span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> Avoid using if statements without using braces to surround the code block. If the code formatting...
|
||||
* [LinguisticNaming](pmd_rules_java_codestyle.html#linguisticnaming): This rule finds Linguistic Naming Antipatterns. It checks for fields, that are named, as if they ...
|
||||
* [LocalHomeNamingConvention](pmd_rules_java_codestyle.html#localhomenamingconvention): The Local Home interface of a Session EJB should be suffixed by 'LocalHome'.
|
||||
* [LocalInterfaceSessionNamingConvention](pmd_rules_java_codestyle.html#localinterfacesessionnamingconvention): The Local Interface of a Session EJB should be suffixed by 'Local'.
|
||||
* [LocalVariableCouldBeFinal](pmd_rules_java_codestyle.html#localvariablecouldbefinal): A local variable assigned only once can be declared final.
|
||||
* [LocalVariableNamingConventions](pmd_rules_java_codestyle.html#localvariablenamingconventions): Configurable naming conventions for local variable declarations and other locally-scoped ...
|
||||
* [LongVariable](pmd_rules_java_codestyle.html#longvariable): Fields, formal arguments, or local variable names that are too long can make the code difficult t...
|
||||
* [MDBAndSessionBeanNamingConvention](pmd_rules_java_codestyle.html#mdbandsessionbeannamingconvention): The EJB Specification states that any MessageDrivenBean or SessionBean should be suffixed by 'Bean'.
|
||||
* [MethodArgumentCouldBeFinal](pmd_rules_java_codestyle.html#methodargumentcouldbefinal): A method argument that is never re-assigned within the method can be declared final.
|
||||
* [MethodNamingConventions](pmd_rules_java_codestyle.html#methodnamingconventions): Configurable naming conventions for method declarations. This rule reports method decl...
|
||||
* [MIsLeadingVariableName](pmd_rules_java_codestyle.html#misleadingvariablename): Detects when a non-field has a name starting with 'm_'. This usually denotes a field and could b...
|
||||
* [MIsLeadingVariableName](pmd_rules_java_codestyle.html#misleadingvariablename): <span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> Detects when a non-field has a name starting with 'm_'. This usually denotes a field and could b...
|
||||
* [NoPackage](pmd_rules_java_codestyle.html#nopackage): Detects when a class or interface does not have a package definition.
|
||||
* [OnlyOneReturn](pmd_rules_java_codestyle.html#onlyonereturn): A method should have only one exit point, and that should be the last statement in the method.
|
||||
* [PackageCase](pmd_rules_java_codestyle.html#packagecase): Detects when a package definition contains uppercase characters.
|
||||
@@ -102,7 +106,7 @@ folder: pmd/rules
|
||||
* [ShortClassName](pmd_rules_java_codestyle.html#shortclassname): Short Classnames with fewer than e.g. five characters are not recommended.
|
||||
* [ShortMethodName](pmd_rules_java_codestyle.html#shortmethodname): Method names that are very short are not helpful to the reader.
|
||||
* [ShortVariable](pmd_rules_java_codestyle.html#shortvariable): Fields, local variables, or parameter names that are very short are not helpful to the reader.
|
||||
* [SuspiciousConstantFieldName](pmd_rules_java_codestyle.html#suspiciousconstantfieldname): Field names using all uppercase characters - Sun's Java naming conventions indicating constants -...
|
||||
* [SuspiciousConstantFieldName](pmd_rules_java_codestyle.html#suspiciousconstantfieldname): <span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> Field names using all uppercase characters - Sun's Java naming conventions indicating constants -...
|
||||
* [TooManyStaticImports](pmd_rules_java_codestyle.html#toomanystaticimports): If you overuse the static import feature, it can make your program unreadable and unmaintainable,...
|
||||
* [UnnecessaryAnnotationValueElement](pmd_rules_java_codestyle.html#unnecessaryannotationvalueelement): Avoid the use of value in annotations when it's the only element.
|
||||
* [UnnecessaryConstructor](pmd_rules_java_codestyle.html#unnecessaryconstructor): This rule detects when a constructor is not necessary; i.e., when there is only one constructor a...
|
||||
@@ -112,7 +116,7 @@ folder: pmd/rules
|
||||
* [UnnecessaryReturn](pmd_rules_java_codestyle.html#unnecessaryreturn): Avoid the use of unnecessary return statements.
|
||||
* [UselessParentheses](pmd_rules_java_codestyle.html#uselessparentheses): Useless parentheses should be removed.
|
||||
* [UselessQualifiedThis](pmd_rules_java_codestyle.html#uselessqualifiedthis): Look for qualified this usages in the same class.
|
||||
* [VariableNamingConventions](pmd_rules_java_codestyle.html#variablenamingconventions): A variable naming conventions rule - customize this to your liking. Currently, itchecks for fina...
|
||||
* [VariableNamingConventions](pmd_rules_java_codestyle.html#variablenamingconventions): <span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> A variable naming conventions rule - customize this to your liking. Currently, itchecks for fina...
|
||||
* [WhileLoopsMustUseBraces](pmd_rules_java_codestyle.html#whileloopsmustusebraces): <span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> Avoid using 'while' statements without using braces to surround the code block. If the code forma...
|
||||
|
||||
## Design
|
||||
@@ -246,7 +250,7 @@ folder: pmd/rules
|
||||
* [MethodWithSameNameAsEnclosingClass](pmd_rules_java_errorprone.html#methodwithsamenameasenclosingclass): Non-constructor methods should not have the same name as the enclosing class.
|
||||
* [MisplacedNullCheck](pmd_rules_java_errorprone.html#misplacednullcheck): The null check here is misplaced. If the variable is null a NullPointerException will be thrown.E...
|
||||
* [MissingBreakInSwitch](pmd_rules_java_errorprone.html#missingbreakinswitch): Switch statements without break or return statements for each case optionmay indicate problematic...
|
||||
* [MissingSerialVersionUID](pmd_rules_java_errorprone.html#missingserialversionuid): Serializable classes should provide a serialVersionUID field.
|
||||
* [MissingSerialVersionUID](pmd_rules_java_errorprone.html#missingserialversionuid): Serializable classes should provide a serialVersionUID field.The serialVersionUID field is also n...
|
||||
* [MissingStaticMethodInNonInstantiatableClass](pmd_rules_java_errorprone.html#missingstaticmethodinnoninstantiatableclass): A class that has private constructors and does not have any static methods or fields cannot be used.
|
||||
* [MoreThanOneLogger](pmd_rules_java_errorprone.html#morethanonelogger): Normally only one logger is used in each class.
|
||||
* [NonCaseLabelInSwitchStatement](pmd_rules_java_errorprone.html#noncaselabelinswitchstatement): A non-case label (e.g. a named break/continue label) was present in a switch statement.This legal...
|
||||
@@ -520,6 +524,14 @@ folder: pmd/rules
|
||||
|
||||
[AddEmptyString](pmd_rules_java_performance.html#addemptystring), [AvoidArrayLoops](pmd_rules_java_performance.html#avoidarrayloops), [AvoidInstantiatingObjectsInLoops](pmd_rules_java_performance.html#avoidinstantiatingobjectsinloops), [LocalVariableCouldBeFinal](pmd_rules_java_codestyle.html#localvariablecouldbefinal), [MethodArgumentCouldBeFinal](pmd_rules_java_codestyle.html#methodargumentcouldbefinal), [PrematureDeclaration](pmd_rules_java_codestyle.html#prematuredeclaration), [RedundantFieldInitializer](pmd_rules_java_performance.html#redundantfieldinitializer), [SimplifyStartsWith](pmd_rules_java_performance.html#simplifystartswith), [UnnecessaryWrapperObjectCreation](pmd_rules_java_performance.html#unnecessarywrapperobjectcreation), [UseArrayListInsteadOfVector](pmd_rules_java_performance.html#usearraylistinsteadofvector), [UseArraysAsList](pmd_rules_java_performance.html#usearraysaslist), [UseStringBufferForStringAppends](pmd_rules_java_performance.html#usestringbufferforstringappends)
|
||||
|
||||
* quickstart (`rulesets/java/quickstart.xml`):
|
||||
|
||||
Quickstart configuration of PMD. Includes the rules that are most likely to apply everywhere.
|
||||
|
||||
It contains the following rules:
|
||||
|
||||
[AbstractClassWithoutAnyMethod](pmd_rules_java_design.html#abstractclasswithoutanymethod), [AssignmentInOperand](pmd_rules_java_errorprone.html#assignmentinoperand), [AssignmentToNonFinalStatic](pmd_rules_java_errorprone.html#assignmenttononfinalstatic), [AvoidAccessibilityAlteration](pmd_rules_java_errorprone.html#avoidaccessibilityalteration), [AvoidBranchingStatementAsLastInLoop](pmd_rules_java_errorprone.html#avoidbranchingstatementaslastinloop), [AvoidCatchingThrowable](pmd_rules_java_errorprone.html#avoidcatchingthrowable), [AvoidDecimalLiteralsInBigDecimalConstructor](pmd_rules_java_errorprone.html#avoiddecimalliteralsinbigdecimalconstructor), [AvoidDollarSigns](pmd_rules_java_codestyle.html#avoiddollarsigns), [AvoidInstanceofChecksInCatchClause](pmd_rules_java_errorprone.html#avoidinstanceofchecksincatchclause), [AvoidMultipleUnaryOperators](pmd_rules_java_errorprone.html#avoidmultipleunaryoperators), [AvoidProtectedFieldInFinalClass](pmd_rules_java_codestyle.html#avoidprotectedfieldinfinalclass), [AvoidProtectedMethodInFinalClassNotExtending](pmd_rules_java_codestyle.html#avoidprotectedmethodinfinalclassnotextending), [AvoidStringBufferField](pmd_rules_java_bestpractices.html#avoidstringbufferfield), [AvoidThreadGroup](pmd_rules_java_multithreading.html#avoidthreadgroup), [AvoidUsingHardCodedIP](pmd_rules_java_bestpractices.html#avoidusinghardcodedip), [AvoidUsingOctalValues](pmd_rules_java_errorprone.html#avoidusingoctalvalues), [AvoidUsingVolatile](pmd_rules_java_multithreading.html#avoidusingvolatile), [BadComparison](pmd_rules_java_errorprone.html#badcomparison), [BigIntegerInstantiation](pmd_rules_java_performance.html#bigintegerinstantiation), [BooleanInstantiation](pmd_rules_java_performance.html#booleaninstantiation), [BrokenNullCheck](pmd_rules_java_errorprone.html#brokennullcheck), [CheckResultSet](pmd_rules_java_bestpractices.html#checkresultset), [CheckSkipResult](pmd_rules_java_errorprone.html#checkskipresult), [ClassCastExceptionWithToArray](pmd_rules_java_errorprone.html#classcastexceptionwithtoarray), [ClassNamingConventions](pmd_rules_java_codestyle.html#classnamingconventions), [ClassWithOnlyPrivateConstructorsShouldBeFinal](pmd_rules_java_design.html#classwithonlyprivateconstructorsshouldbefinal), [CloneMethodMustBePublic](pmd_rules_java_errorprone.html#clonemethodmustbepublic), [CloneMethodMustImplementCloneable](pmd_rules_java_errorprone.html#clonemethodmustimplementcloneable), [CloneMethodReturnTypeMustMatchClassName](pmd_rules_java_errorprone.html#clonemethodreturntypemustmatchclassname), [CloneThrowsCloneNotSupportedException](pmd_rules_java_errorprone.html#clonethrowsclonenotsupportedexception), [CloseResource](pmd_rules_java_errorprone.html#closeresource), [CompareObjectsWithEquals](pmd_rules_java_errorprone.html#compareobjectswithequals), [ConstantsInInterface](pmd_rules_java_bestpractices.html#constantsininterface), [ControlStatementBraces](pmd_rules_java_codestyle.html#controlstatementbraces), [DefaultLabelNotLastInSwitchStmt](pmd_rules_java_bestpractices.html#defaultlabelnotlastinswitchstmt), [DoNotCallGarbageCollectionExplicitly](pmd_rules_java_errorprone.html#donotcallgarbagecollectionexplicitly), [DoNotExtendJavaLangError](pmd_rules_java_design.html#donotextendjavalangerror), [DoNotExtendJavaLangThrowable](pmd_rules_java_errorprone.html#donotextendjavalangthrowable), [DontCallThreadRun](pmd_rules_java_multithreading.html#dontcallthreadrun), [DontImportJavaLang](pmd_rules_java_codestyle.html#dontimportjavalang), [DontUseFloatTypeForLoopIndices](pmd_rules_java_errorprone.html#dontusefloattypeforloopindices), [DoubleCheckedLocking](pmd_rules_java_multithreading.html#doublecheckedlocking), [DuplicateImports](pmd_rules_java_codestyle.html#duplicateimports), [EmptyCatchBlock](pmd_rules_java_errorprone.html#emptycatchblock), [EmptyFinalizer](pmd_rules_java_errorprone.html#emptyfinalizer), [EmptyFinallyBlock](pmd_rules_java_errorprone.html#emptyfinallyblock), [EmptyIfStmt](pmd_rules_java_errorprone.html#emptyifstmt), [EmptyInitializer](pmd_rules_java_errorprone.html#emptyinitializer), [EmptyStatementBlock](pmd_rules_java_errorprone.html#emptystatementblock), [EmptyStatementNotInLoop](pmd_rules_java_errorprone.html#emptystatementnotinloop), [EmptySwitchStatements](pmd_rules_java_errorprone.html#emptyswitchstatements), [EmptySynchronizedBlock](pmd_rules_java_errorprone.html#emptysynchronizedblock), [EmptyTryBlock](pmd_rules_java_errorprone.html#emptytryblock), [EmptyWhileStmt](pmd_rules_java_errorprone.html#emptywhilestmt), [EqualsNull](pmd_rules_java_errorprone.html#equalsnull), [ExtendsObject](pmd_rules_java_codestyle.html#extendsobject), [FinalFieldCouldBeStatic](pmd_rules_java_design.html#finalfieldcouldbestatic), [ForLoopCanBeForeach](pmd_rules_java_bestpractices.html#forloopcanbeforeach), [ForLoopShouldBeWhileLoop](pmd_rules_java_codestyle.html#forloopshouldbewhileloop), [FormalParameterNamingConventions](pmd_rules_java_codestyle.html#formalparameternamingconventioLine truncated
|
||||
|
||||
* Security Code Guidelines (`rulesets/java/sunsecure.xml`):
|
||||
|
||||
<span style="border-radius: 0.25em; color: #fff; padding: 0.2em 0.6em 0.3em; display: inline; background-color: #d9534f; font-size: 75%;">Deprecated</span> This ruleset is for backwards compatibility.
|
||||
|
||||
Loaded 30 of 357 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user