Skip to content

Commit d0ffc1b

Browse files
committed
Use multiple PMD executions.
1 parent 679838e commit d0ffc1b

4 files changed

+152
-18
lines changed

etc/pmd-configuration.xml etc/pmd-java-configuration.xml

+1-7
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,6 @@
1616
<exclude name="JUnit5TestShouldBePackagePrivate"/>
1717
<exclude name="JUnit4TestShouldUseTestAnnotation"/>
1818
<exclude name="UnusedPrivateMethod"/>
19-
<exclude name="LooseCoupling"/>
20-
</rule>
21-
<rule ref="category/java/bestpractices.xml/LooseCoupling">
22-
<properties>
23-
<property name="allowedTypes" value="com.tngtech.archunit.core.domain.JavaClasses"/>
24-
</properties>
2519
</rule>
2620
<rule ref="category/java/codestyle.xml">
2721
<exclude name="EmptyControlStatement"/>
@@ -77,7 +71,7 @@
7771
</rule>
7872
<rule ref="category/java/design.xml/SimplifyBooleanReturns">
7973
<properties>
80-
<property name="violationSuppressXPath" value="./ancestor::*[@Name = 'equals']"/>
74+
<property name="violationSuppressXPath" value="./ancestor::*[@Name = 'equals'] | ./ancestor::*[@Name = 'hashCode']"/>
8175
</properties>
8276
</rule>
8377
<rule ref="category/java/errorprone.xml">

etc/pmd-javascript-configuration.xml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!-- ${project.groupId}:${project.artifactId}:${project.version} -->
3+
<ruleset xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
name="pmd-eclipse"
6+
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
7+
<description>Ullrich Hafner's PMD rules</description>
8+
9+
<rule ref="category/ecmascript/bestpractices.xml"/>
10+
<rule ref="category/ecmascript/codestyle.xml"/>
11+
<rule ref="category/ecmascript/errorprone.xml"/>
12+
</ruleset>

etc/pmd-tests-configuration.xml

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!-- ${project.groupId}:${project.artifactId}:${project.version} -->
3+
<ruleset xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
name="pmd-eclipse"
6+
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
7+
<description>Ullrich Hafner's PMD rules</description>
8+
9+
<rule ref="category/java/bestpractices.xml">
10+
<exclude name="LiteralsFirstInComparisons"/>
11+
<exclude name="JUnitTestContainsTooManyAsserts"/>
12+
<exclude name="JUnitTestsShouldIncludeAssert"/>
13+
<exclude name="JUnitAssertionsShouldIncludeMessage"/>
14+
<exclude name="GuardLogStatement"/>
15+
<exclude name="AccessorMethodGeneration"/>
16+
<exclude name="JUnit5TestShouldBePackagePrivate"/>
17+
<exclude name="JUnit4TestShouldUseTestAnnotation"/>
18+
<exclude name="UnusedPrivateMethod"/>
19+
<exclude name="LooseCoupling"/>
20+
</rule>
21+
<rule ref="category/java/codestyle.xml">
22+
<exclude name="EmptyControlStatement"/>
23+
<exclude name="AtLeastOneConstructor"/>
24+
<exclude name="UnnecessaryConstructor"/>
25+
<exclude name="FieldDeclarationsShouldBeAtStartOfClass"/>
26+
<exclude name="CommentDefaultAccessModifier"/>
27+
<exclude name="LocalVariableCouldBeFinal"/>
28+
<exclude name="LongVariable"/>
29+
<exclude name="ShortVariable"/>
30+
<exclude name="ShortClassName"/>
31+
<exclude name="OnlyOneReturn"/>
32+
<exclude name="EmptyMethodInAbstractClassShouldBeAbstract"/>
33+
<exclude name="ConfusingTernary"/>
34+
<exclude name="LocalVariableNamingConventions"/>
35+
<exclude name="ClassNamingConventions"/>
36+
</rule>
37+
<rule ref="category/java/codestyle.xml/UnnecessaryConstructor">
38+
<properties>
39+
<property name="ignoredAnnotations" value="org.kohsuke.stapler.DataBoundConstructor"/>
40+
</properties>
41+
</rule>
42+
<rule ref="category/java/codestyle.xml/ClassNamingConventions">
43+
<properties>
44+
<property name="utilityClassPattern" value="[A-Z][a-zA-Z0-9]+"/>
45+
<property name="testClassPattern" value="^[A-Z][a-zA-Z0-9]+Test.*$|^[A-Z][a-zA-Z0-9]+Benchmark.*$|"/>
46+
</properties>
47+
</rule>
48+
<rule ref="category/java/codestyle.xml/LinguisticNaming">
49+
<properties>
50+
<property name="checkSetters" value="false"/>
51+
<property name="booleanMethodPrefixes" value="is|has|can|have|will" />
52+
</properties>
53+
</rule>
54+
<rule ref="category/java/codestyle.xml/ConfusingTernary">
55+
<properties>
56+
<property name="ignoreElseIf" value="true"/>
57+
</properties>
58+
</rule>
59+
<rule ref="category/java/design.xml">
60+
<exclude name="LoosePackageCoupling"/>
61+
<exclude name="LawOfDemeter"/>
62+
<exclude name="TooManyMethods"/>
63+
<exclude name="ClassWithOnlyPrivateConstructorsShouldBeFinal"/>
64+
<exclude name="ExcessiveParameterList"/>
65+
<exclude name="ExcessiveMethodLength"/>
66+
<exclude name="UseObjectForClearerAPI"/>
67+
<exclude name="AvoidCatchingGenericException"/>
68+
<exclude name="FinalFieldCouldBeStatic"/>
69+
<exclude name="AvoidUncheckedExceptionsInSignatures"/>
70+
<exclude name="ExcessiveImports"/>
71+
<exclude name="SimplifyBooleanReturns"/>
72+
</rule>
73+
<rule ref="category/java/design.xml/SimplifyBooleanReturns">
74+
<properties>
75+
<property name="violationSuppressXPath" value="./MethodDeclaration[@Image='equals']"/>
76+
</properties>
77+
</rule>
78+
<rule ref="category/java/errorprone.xml">
79+
<exclude name="AvoidDuplicateLiterals"/>
80+
<exclude name="TestClassWithoutTestCases"/>
81+
<exclude name="EmptyCatchBlock"/>
82+
<exclude name="AvoidLiteralsInIfCondition"/>
83+
<exclude name="UseProperClassLoader"/>
84+
</rule>
85+
<rule ref="category/java/errorprone.xml/AvoidLiteralsInIfCondition">
86+
<properties>
87+
<property name="ignoreMagicNumbers" value="-1,0,1"/>
88+
</properties>
89+
</rule>
90+
<rule ref="category/java/errorprone.xml/EmptyCatchBlock">
91+
<properties>
92+
<property name="allowCommentedBlocks" value="true"/>
93+
</properties>
94+
</rule>
95+
<rule ref="category/java/multithreading.xml">
96+
<exclude name="UseConcurrentHashMap"/>
97+
</rule>
98+
<rule ref="category/java/performance.xml">
99+
<exclude name="AppendCharacterWithChar"/>
100+
<exclude name="AvoidInstantiatingObjectsInLoops"/>
101+
<exclude name="RedundantFieldInitializer"/>
102+
<exclude name="ConsecutiveAppendsShouldReuse"/>
103+
<exclude name="UseStringBufferForStringAppends"/>
104+
</rule>
105+
<rule ref="category/java/security.xml">
106+
</rule>
107+
108+
</ruleset>

pom.xml

+31-11
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@
490490
<classifier>config</classifier>
491491
<includes>
492492
<include>**/checkstyle-configuration.xml</include>
493-
<include>**/pmd-configuration.xml</include>
493+
<include>**/pmd-*-configuration.xml</include>
494494
<include>**/spotbugs-exclusion-filter.xml</include>
495495
</includes>
496496
</configuration>
@@ -547,16 +547,7 @@
547547
<configuration>
548548
<linkXRef>false</linkXRef>
549549
<failOnViolation>false</failOnViolation>
550-
<rulesets>
551-
<ruleset>etc/pmd-configuration.xml</ruleset>
552-
</rulesets>
553550
<targetJdk>${java.version}</targetJdk>
554-
<includeTests>true</includeTests>
555-
<minimumTokens>50</minimumTokens>
556-
<excludeRoots>
557-
<excludeRoot>target/generated-test-sources/test-annotations</excludeRoot>
558-
<excludeRoot>target/generated-test-sources/assertj-assertions</excludeRoot>
559-
</excludeRoots>
560551
</configuration>
561552
<dependencies>
562553
<dependency>
@@ -587,12 +578,41 @@
587578
</dependencies>
588579
<executions>
589580
<execution>
590-
<id>run-pmd</id>
581+
<id>run-pmd-java</id>
582+
<goals>
583+
<goal>pmd</goal>
584+
<goal>cpd</goal>
585+
</goals>
586+
<phase>verify</phase>
587+
<configuration>
588+
<targetDirectory>${project.build.directory}/pmd-java</targetDirectory>
589+
<rulesets>
590+
<ruleset>etc/pmd-java-configuration.xml</ruleset>
591+
</rulesets>
592+
<includeTests>false</includeTests>
593+
<minimumTokens>50</minimumTokens>
594+
</configuration>
595+
</execution>
596+
<execution>
597+
<id>run-pmd-tests</id>
591598
<goals>
592599
<goal>pmd</goal>
593600
<goal>cpd</goal>
594601
</goals>
595602
<phase>verify</phase>
603+
<configuration>
604+
<targetDirectory>${project.build.directory}/pmd-tests</targetDirectory>
605+
<rulesets>
606+
<ruleset>etc/pmd-tests-configuration.xml</ruleset>
607+
</rulesets>
608+
<includeTests>true</includeTests>
609+
<minimumTokens>100</minimumTokens>
610+
<excludeRoots>
611+
<excludeRoot>src/main/java</excludeRoot>
612+
<excludeRoot>${project.build.directory}/generated-test-sources/test-annotations</excludeRoot>
613+
<excludeRoot>${project.build.directory}/generated-test-sources/assertj-assertions</excludeRoot>
614+
</excludeRoots>
615+
</configuration>
596616
</execution>
597617
</executions>
598618
</plugin>

0 commit comments

Comments
 (0)