Skip to content

Commit 282ffe5

Browse files
committedDec 3, 2018
For #772: Removal of overlapping checks of PMD and checkstyle
1 parent e96aa02 commit 282ffe5

File tree

5 files changed

+160
-1
lines changed

5 files changed

+160
-1
lines changed
 

‎qulice-checkstyle/src/main/resources/com/qulice/checkstyle/checks.xml

+13-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,19 @@
3333
* OF THE POSSIBILITY OF SUCH DAMAGE.
3434
*
3535
* @link http://checkstyle.sourceforge.net/config.html
36+
* @todo #772:30min Checkstyle and PMD rules overlap. Let's get rid of
37+
* checkstyle and PMD overlapping rules removing the checkstyle ones and making
38+
* sure that PMD ones have at least the same threshold as the removed
39+
* checkstyle checks (that is, we don't reduce code quality).
40+
* Following checks are equivalent:
41+
* checkstyle -> PMD
42+
* JavaNCSS (method and class) -> NcssMethodCount, NcssConstructorCount,
43+
* NcssTypeCount
44+
* CyclomaticComplexity -> CyclomaticComplexity, StdCyclomaticComplexity,
45+
* ModifiedCyclomaticComplexity
46+
* NPathComplexity->NPathComplexity
47+
* MethodLength -> ExcessiveMethodLength
48+
* IllegalCatch -> AvoidCatchingGenericException
3649
-->
3750
<module name="Checker">
3851
<!--
@@ -272,7 +285,6 @@
272285
<module name="AvoidStaticImport" />
273286
<module name="IllegalImport"/>
274287
<module name="RedundantImport"/>
275-
<module name="UnusedImports"/>
276288
<module name="ImportOrder"/>
277289

278290
<module name="NoLineWrap"/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright (c) 2011-2018, Qulice.com
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met: 1) Redistributions of source code must retain the above
8+
* copyright notice, this list of conditions and the following
9+
* disclaimer. 2) Redistributions in binary form must reproduce the above
10+
* copyright notice, this list of conditions and the following
11+
* disclaimer in the documentation and/or other materials provided
12+
* with the distribution. 3) Neither the name of the Qulice.com nor
13+
* the names of its contributors may be used to endorse or promote
14+
* products derived from this software without specific prior written
15+
* permission.
16+
*
17+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
19+
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20+
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21+
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22+
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24+
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26+
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28+
* OF THE POSSIBILITY OF SUCH DAMAGE.
29+
*/
30+
package com.qulice.pmd;
31+
32+
import org.hamcrest.core.IsEqual;
33+
import org.hamcrest.core.StringStartsWith;
34+
import org.junit.Test;
35+
36+
/**
37+
* Test case for LocalVariableCouldBeFinal.
38+
*
39+
* @since 0.18
40+
*/
41+
public class LocalVariableCouldBeFinalRuleTest {
42+
43+
/**
44+
* LocalVariableCouldBeFinal can detect when variable is not
45+
* final and shows correct message.
46+
*
47+
* @throws Exception If something goes wrong
48+
*/
49+
@Test
50+
public final void detectLocalVariableCouldBeFinal() throws Exception {
51+
new PmdAssert(
52+
"LocalVariableCouldBeFinal.java",
53+
new IsEqual<>(false),
54+
new StringStartsWith(
55+
String.join(
56+
" ",
57+
"PMD: LocalVariableCouldBeFinal.java[6-6]:",
58+
"Local variable 'nonfinal' could be declared final",
59+
"(LocalVariableCouldBeFinal)"
60+
)
61+
)
62+
).validate();
63+
}
64+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright (c) 2011-2018, Qulice.com
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met: 1) Redistributions of source code must retain the above
8+
* copyright notice, this list of conditions and the following
9+
* disclaimer. 2) Redistributions in binary form must reproduce the above
10+
* copyright notice, this list of conditions and the following
11+
* disclaimer in the documentation and/or other materials provided
12+
* with the distribution. 3) Neither the name of the Qulice.com nor
13+
* the names of its contributors may be used to endorse or promote
14+
* products derived from this software without specific prior written
15+
* permission.
16+
*
17+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
19+
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20+
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21+
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22+
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24+
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26+
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28+
* OF THE POSSIBILITY OF SUCH DAMAGE.
29+
*/
30+
package com.qulice.pmd;
31+
32+
import org.hamcrest.core.IsEqual;
33+
import org.hamcrest.core.StringStartsWith;
34+
import org.junit.Test;
35+
36+
/**
37+
* Test case for LocalVariableCouldBeFinal.
38+
*
39+
* @since 0.18
40+
*/
41+
public class UnusedImportsRuleTest {
42+
43+
/**
44+
* UnusedImport can detect when the class has an unused import line and
45+
* show error message correctly.
46+
*
47+
* @throws Exception If something goes wrong
48+
*/
49+
@Test
50+
public final void detectUnusedImportLine() throws Exception {
51+
new PmdAssert(
52+
"UnusedImports.java",
53+
new IsEqual<>(false),
54+
new StringStartsWith(
55+
String.join(
56+
" ",
57+
"PMD: UnusedImports.java[3-3]: Avoid unused imports such",
58+
"as 'unused.bar.foo.UnusedImport'",
59+
"(UnusedImports)"
60+
).trim()
61+
)
62+
).validate();
63+
}
64+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package foo;
2+
3+
public final class LocalVariableCouldBeFinal {
4+
5+
public int method() {
6+
int nonfinal = 0;
7+
return nonfinal;
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package foo;
2+
3+
import unused.bar.foo.UnusedImport;
4+
5+
public final class UnusedImports {
6+
7+
public int method() {
8+
return null;
9+
}
10+
}

0 commit comments

Comments
 (0)
Please sign in to comment.