Skip to content

Commit 2b0b437

Browse files
author
Vincent Potucek
committed
[POC-FIX-PMD] maven-pmd-plugin: reactivate PMD - Error Prone
1 parent 96efade commit 2b0b437

File tree

7 files changed

+187
-53
lines changed

7 files changed

+187
-53
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@
1616
.factorypath
1717
.vscode/
1818
repo/
19-
/*.svg
19+
/*.svg
20+
.pmd/.cache

.pmd/exclude.properties

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
org.apache.maven.ReactorReader=UselessParentheses
2+
org.apache.maven.api.DependencyScope=UnnecessaryFullyQualifiedName
3+
org.apache.maven.api.JavaPathType=UnnecessaryFullyQualifiedName,UnnecessaryModifier
4+
org.apache.maven.api.MonotonicClock=UnnecessaryFullyQualifiedName
5+
org.apache.maven.api.plugin.testing.Foo=UnnecessaryFullyQualifiedName
6+
org.apache.maven.api.plugin.testing.MojoExtension=CollapsibleIfStatements
7+
org.apache.maven.api.plugin.testing.stubs.SessionMock=TooManyStaticImports
8+
org.apache.maven.api.services.ArtifactCoordinatesFactoryRequest=UnnecessaryFullyQualifiedName
9+
org.apache.maven.api.services.ArtifactFactoryRequest=UnnecessaryFullyQualifiedName
10+
org.apache.maven.api.services.DependencyCoordinatesFactoryRequest=UnnecessaryFullyQualifiedName
11+
org.apache.maven.artifact.ArtifactUtils=UnnecessaryFullyQualifiedName
12+
org.apache.maven.artifact.DefaultArtifact=UselessParentheses
13+
org.apache.maven.artifact.deployer.DefaultArtifactDeployer=EmptyControlStatement
14+
org.apache.maven.artifact.handler.manager.DefaultArtifactHandlerManager=CollapsibleIfStatements
15+
org.apache.maven.artifact.handler.manager.LegacyArtifactHandlerManager=CollapsibleIfStatements
16+
org.apache.maven.artifact.installer.DefaultArtifactInstaller=EmptyControlStatement
17+
org.apache.maven.artifact.metadata.AbstractArtifactMetadata=UnnecessaryFullyQualifiedName
18+
org.apache.maven.artifact.repository.ArtifactRepositoryPolicy=UnnecessaryFullyQualifiedName
19+
org.apache.maven.artifact.repository.DefaultArtifactRepository=UnusedFormalParameter
20+
org.apache.maven.artifact.repository.metadata.AbstractRepositoryMetadata=UnnecessaryFullyQualifiedName
21+
org.apache.maven.artifact.repository.metadata.DefaultRepositoryMetadataManager=CollapsibleIfStatements
22+
org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer=UnnecessaryFullyQualifiedName
23+
org.apache.maven.artifact.resolver.DaemonThreadCreator=AvoidThreadGroup
24+
org.apache.maven.artifact.resolver.filter.ExclusionArtifactFilter=UnusedPrivateField
25+
org.apache.maven.artifact.versioning.ComparableVersion=UselessParentheses
26+
org.apache.maven.artifact.versioning.ListItem=UselessParentheses
27+
org.apache.maven.artifact.versioning.VersionRange=CollapsibleIfStatements
28+
org.apache.maven.bridge.MavenRepositorySystem=AvoidUsingHardCodedIP,UnnecessaryFullyQualifiedName,UselessParentheses
29+
org.apache.maven.cli.CLIReportingUtils=UselessParentheses
30+
org.apache.maven.cli.MavenCli=UnnecessaryFullyQualifiedName,UselessParentheses
31+
org.apache.maven.cli.configuration.SettingsXmlConfigurationProcessor=UnusedFormalParameter
32+
org.apache.maven.cli.props.MavenProperties=CollapsibleIfStatements
33+
org.apache.maven.cli.props.MavenPropertiesLoader=UselessParentheses
34+
org.apache.maven.cli.transfer.AbstractMavenTransferListener=UselessParentheses
35+
org.apache.maven.cli.transfer.ConsoleMavenTransferListener=UnusedFormalParameter
36+
org.apache.maven.cli.transfer.Slf4jMavenTransferListener=UselessParentheses
37+
org.apache.maven.cling.executor.embedded.Context=UnusedPrivateField
38+
org.apache.maven.cling.invoker.BaseParser=TooManyStaticImports
39+
org.apache.maven.cling.invoker.LookupInvoker=SimplifiedTernary
40+
org.apache.maven.cling.invoker.mvnenc.CommonsCliEncryptOptions=UnnecessaryFullyQualifiedName
41+
org.apache.maven.cling.invoker.mvnsh.CommonsCliShellOptions=UnnecessaryFullyQualifiedName
42+
org.apache.maven.cling.invoker.mvnsh.builtin.BuiltinShellCommandRegistry=UnusedFormalParameter
43+
org.apache.maven.cling.logging.Slf4jLoggerManager=UselessParentheses
44+
org.apache.maven.cling.logging.impl.UnsupportedSlf4jBindingConfiguration=UnusedFormalParameter
45+
org.apache.maven.cling.props.MavenProperties=CollapsibleIfStatements
46+
org.apache.maven.cling.props.MavenPropertiesLoader=UselessParentheses
47+
org.apache.maven.cling.transfer.AbstractMavenTransferListener=UselessParentheses
48+
org.apache.maven.cling.transfer.ConsoleMavenTransferListener=UnusedFormalParameter
49+
org.apache.maven.cling.transfer.Slf4jMavenTransferListener=UselessParentheses
50+
org.apache.maven.cling.utils.CLIReportingUtils=UnusedPrivateField,UselessParentheses
51+
org.apache.maven.configuration.BasedirBeanConfigurationPathTranslator=EmptyControlStatement
52+
org.apache.maven.di.impl.Binding=UnnecessaryFullyQualifiedName
53+
org.apache.maven.di.impl.ReflectionUtils=UnnecessaryFullyQualifiedName
54+
org.apache.maven.di.impl.SingletonScope=UnnecessaryFullyQualifiedName
55+
org.apache.maven.di.impl.Types=JumbledIncrementer,UnnecessaryFullyQualifiedName
56+
org.apache.maven.exception.DefaultExceptionHandler=UselessParentheses
57+
org.apache.maven.execution.MavenSession=UnusedFormalParameter
58+
org.apache.maven.graph.DefaultGraphBuilder=UselessParentheses
59+
org.apache.maven.impl.DefaultNode=UnnecessaryFullyQualifiedName,UselessParentheses
60+
org.apache.maven.impl.DefaultRepositoryFactory=UnnecessaryFullyQualifiedName
61+
org.apache.maven.impl.DefaultSettingsBuilder=UnusedFormalParameter
62+
org.apache.maven.impl.DefaultToolchainsBuilder=UnusedFormalParameter
63+
org.apache.maven.impl.DefaultTransportProvider=UnnecessaryFullyQualifiedName
64+
org.apache.maven.impl.InternalSession=UnnecessaryFullyQualifiedName
65+
org.apache.maven.impl.PathSelector=CollapsibleIfStatements
66+
org.apache.maven.impl.PropertiesAsMap=UnnecessaryFullyQualifiedName
67+
org.apache.maven.impl.SettingsUtilsV4=UnnecessaryFullyQualifiedName
68+
org.apache.maven.impl.model.DefaultInheritanceAssembler=UselessParentheses
69+
org.apache.maven.impl.model.DefaultModelBuilder=UnnecessaryFullyQualifiedName
70+
org.apache.maven.impl.model.DefaultModelInterpolator=EmptyControlStatement
71+
org.apache.maven.impl.model.DefaultModelValidator=UnnecessaryFullyQualifiedName
72+
org.apache.maven.impl.model.MavenModelMerger=CollapsibleIfStatements,UselessOverridingMethod
73+
org.apache.maven.impl.model.ModelBuilderSessionState=CollapsibleIfStatements
74+
org.apache.maven.impl.resolver.LocalSnapshotMetadataGenerator=UnusedFormalParameter
75+
org.apache.maven.impl.resolver.scopes.Maven3ScopeManagerConfiguration=TooManyStaticImports,UnnecessaryFullyQualifiedName
76+
org.apache.maven.impl.resolver.scopes.Maven4ScopeManagerConfiguration=TooManyStaticImports,UnnecessaryFullyQualifiedName
77+
org.apache.maven.internal.aether.DefaultRepositorySystemSessionFactory=EmptyControlStatement
78+
org.apache.maven.internal.impl.CleanLifecycle=UnnecessaryFullyQualifiedName
79+
org.apache.maven.internal.impl.DefaultLifecycle=UnnecessaryFullyQualifiedName
80+
org.apache.maven.internal.impl.DefaultLifecycleRegistry=TooManyStaticImports,UnnecessaryFullyQualifiedName
81+
org.apache.maven.internal.impl.DefaultTypeRegistry=CollapsibleIfStatements
82+
org.apache.maven.internal.impl.SiteLifecycle=UnnecessaryFullyQualifiedName
83+
org.apache.maven.internal.transformation.impl.DefaultConsumerPomArtifactTransformer=UnusedPrivateMethod
84+
org.apache.maven.internal.transformation.impl.DefaultConsumerPomBuilder=UnusedFormalParameter
85+
org.apache.maven.jline.DefaultPrompter=UselessParentheses
86+
org.apache.maven.jline.MessageUtils=UnnecessaryFullyQualifiedName
87+
org.apache.maven.lifecycle.DefaultLifecycles=UnusedFormalParameter
88+
org.apache.maven.lifecycle.LifecycleExecutionException=UnusedFormalParameter
89+
org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator=UselessParentheses
90+
org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator=UselessParentheses
91+
org.apache.maven.lifecycle.internal.MojoExecutor=UnusedLocalVariable
92+
org.apache.maven.lifecycle.internal.builder.BuilderCommon=EmptyControlStatement
93+
org.apache.maven.lifecycle.internal.concurrent.BuildContext=CollapsibleIfStatements,EmptyControlStatement,UnusedLocalVariable
94+
org.apache.maven.lifecycle.internal.concurrent.BuildPlanExecutor=TooManyStaticImports,UselessParentheses
95+
org.apache.maven.lifecycle.internal.concurrent.ConcurrentLifecycleStarter=UselessParentheses
96+
org.apache.maven.logging.LoggingExecutionListener=UselessParentheses
97+
org.apache.maven.model.building.DefaultModelBuilder.java=UnnecessaryFullyQualifiedName
98+
org.apache.maven.model.building.DefaultModelBuilder=UnnecessaryFullyQualifiedName
99+
org.apache.maven.model.inheritance.DefaultInheritanceAssembler=UselessParentheses
100+
org.apache.maven.model.io.xpp3.MavenXpp3ReaderEx=UselessOverridingMethod
101+
org.apache.maven.model.io.xpp3.MavenXpp3WriterEx=UselessOverridingMethod
102+
org.apache.maven.model.merge.MavenModelMerger=CollapsibleIfStatements
103+
org.apache.maven.model.merge.ModelMerger=CollapsibleIfStatements
104+
org.apache.maven.model.validation.DefaultModelValidator=UnusedFormalParameter
105+
org.apache.maven.plugin.CycleDetectedInPluginGraphException=UnusedFormalParameter
106+
org.apache.maven.plugin.PluginConfigurationException=UnusedPrivateField
107+
org.apache.maven.plugin.PluginParameterException=UselessParentheses
108+
org.apache.maven.plugin.PluginParameterExpressionEvaluator=EmptyControlStatement,UselessParentheses
109+
org.apache.maven.plugin.PluginParameterExpressionEvaluatorV4=CollapsibleIfStatements,EmptyControlStatement,UselessParentheses
110+
org.apache.maven.plugin.internal.DefaultLegacySupport=UnnecessaryFullyQualifiedName
111+
org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver=UselessParentheses
112+
org.apache.maven.project.BuildSession=UselessParentheses
113+
org.apache.maven.project.DefaultProjectBuilder=UnusedFormalParameter
114+
org.apache.maven.project.MavenProject=CollapsibleIfStatements,UnusedFormalParameter,UselessParentheses
115+
org.apache.maven.project.ProjectSorter=UselessParentheses
116+
org.apache.maven.project.collector.DefaultProjectsSelector=UselessParentheses
117+
org.apache.maven.project.interpolation.RegexBasedModelInterpolator=UnusedFormalParameter
118+
org.apache.maven.project.path.DefaultPathTranslator=CollapsibleIfStatements
119+
org.apache.maven.repository.DefaultMirrorSelector=AvoidUsingHardCodedIP,UselessParentheses
120+
org.apache.maven.repository.internal.DefaultModelResolver=UnnecessaryFullyQualifiedName
121+
org.apache.maven.repository.internal.LocalSnapshotMetadataGenerator=UnusedFormalParameter
122+
org.apache.maven.repository.internal.scopes.Maven3ScopeManagerConfiguration=TooManyStaticImports,UnnecessaryFullyQualifiedName
123+
org.apache.maven.repository.internal.scopes.Maven4ScopeManagerConfiguration=TooManyStaticImports,UnnecessaryFullyQualifiedName
124+
org.apache.maven.repository.legacy.DefaultUpdateCheckManager=UnusedLocalVariable
125+
org.apache.maven.repository.legacy.DefaultWagonManager=UnusedFormalParameter
126+
org.apache.maven.repository.legacy.LegacyRepositorySystem=UnnecessaryFullyQualifiedName
127+
org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector=CollapsibleIfStatements
128+
org.apache.maven.repository.legacy.resolver.transform.SnapshotTransformation=UselessParentheses
129+
org.apache.maven.repository.metadata.ArtifactMetadata=UnusedFormalParameter
130+
org.apache.maven.repository.metadata.DefaultGraphConflictResolver=UnusedFormalParameter
131+
org.apache.maven.repository.metadata.MetadataGraph=UnusedFormalParameter
132+
org.apache.maven.repository.metadata.MetadataGraphEdge=OverrideBothEqualsAndHashcode,UselessParentheses
133+
org.apache.maven.settings.DefaultMavenSettingsBuilder=UnnecessaryFullyQualifiedName
134+
org.apache.maven.settings.building.DefaultSettingsBuilder=UnusedFormalParameter
135+
org.apache.maven.slf4j.DefaultLogLevelRecorder=AvoidBranchingStatementAsLastInLoop,CollapsibleIfStatements
136+
org.apache.maven.slf4j.MavenBaseLogger=UselessParentheses
137+
org.apache.maven.slf4j.SimpleLoggerConfiguration=UselessParentheses
138+
org.apache.maven.toolchain.DefaultToolchainManagerV3=UnnecessaryFullyQualifiedName
139+
org.apache.maven.toolchain.building.DefaultToolchainsBuilder=UnusedFormalParameter
140+
org.apache.maven.toolchain.java.DefaultJavaToolChain=UselessOverridingMethod

impl/maven-xml/src/main/java/org/apache/maven/internal/xml/DefaultXmlService.java

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -392,34 +392,6 @@ private static String getChildCombinationMode(Map<String, String> attributes) {
392392
return !isEmpty(value) ? value : DEFAULT_CHILDREN_COMBINATION_MODE;
393393
}
394394

395-
@Nullable
396-
private static XmlNode findNodeById(@Nonnull List<XmlNode> nodes, @Nonnull String id) {
397-
return nodes.stream()
398-
.filter(n -> id.equals(n.attribute(ID_COMBINATION_MODE_ATTRIBUTE)))
399-
.findFirst()
400-
.orElse(null);
401-
}
402-
403-
@Nullable
404-
private static XmlNode findNodeByKeys(
405-
@Nonnull List<XmlNode> nodes, @Nonnull XmlNode target, @Nonnull String[] keys) {
406-
return nodes.stream()
407-
.filter(n -> matchesKeys(n, target, keys))
408-
.findFirst()
409-
.orElse(null);
410-
}
411-
412-
private static boolean matchesKeys(@Nonnull XmlNode node1, @Nonnull XmlNode node2, @Nonnull String[] keys) {
413-
for (String key : keys) {
414-
String value1 = node1.attribute(key);
415-
String value2 = node2.attribute(key);
416-
if (!Objects.equals(value1, value2)) {
417-
return false;
418-
}
419-
}
420-
return true;
421-
}
422-
423395
static class IndentingXMLStreamWriter extends StreamWriterDelegate {
424396

425397
int depth = 0;

its/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckThreadSafetyMojo.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,13 @@ public void run() {
9595
getLog().info("[MAVEN-CORE-IT-LOG] Thread " + this + " uses " + tccl);
9696
Thread.currentThread().setContextClassLoader(tccl);
9797
while (go.isEmpty()) {
98-
// wait for start
98+
// [WARNING] PMD Failure: Rule:EmptyControlStatement Priority:3 Empty while statement.
99+
try {
100+
Thread.sleep(100);
101+
} catch (InterruptedException e) {
102+
throw new RuntimeException(e);
103+
}
104+
// wait for the start
99105
}
100106
for (int j = 0; j < 10 * 1000; j++) {
101107
try {

its/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,11 +222,8 @@ private String calcChecksum(File jarFile) throws IOException, NoSuchAlgorithmExc
222222
MessageDigest digester = MessageDigest.getInstance("SHA-1");
223223

224224
try (FileInputStream is = new FileInputStream(jarFile)) {
225-
DigestInputStream dis = new DigestInputStream(is, digester);
226-
227-
for (byte[] buffer = new byte[1024 * 4]; dis.read(buffer) >= 0; ) {
228-
// just read it
229-
}
225+
// [WARNING] PMD Failure: Rule:EmptyControlStatement Priority:3 Empty for statement.
226+
new DigestInputStream(is, digester).read(new byte[1024 * 4]);
230227
}
231228

232229
byte[] digest = digester.digest();

its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -665,24 +665,6 @@ public String getArtifactPath(String gid, String aid, String version, String ext
665665
+ executorTool.artifactPath(executorHelper.executorRequest(), gav, null);
666666
}
667667

668-
private String getSupportArtifactPath(String artifact) {
669-
StringTokenizer tok = new StringTokenizer(artifact, ":");
670-
if (tok.countTokens() != 4) {
671-
throw new IllegalArgumentException("Artifact must have 4 tokens: '" + artifact + "'");
672-
}
673-
674-
String[] a = new String[4];
675-
for (int i = 0; i < 4; i++) {
676-
a[i] = tok.nextToken();
677-
}
678-
679-
String groupId = a[0];
680-
String artifactId = a[1];
681-
String version = a[2];
682-
String ext = a[3];
683-
return getSupportArtifactPath(groupId, artifactId, version, ext);
684-
}
685-
686668
public String getSupportArtifactPath(String groupId, String artifactId, String version, String ext) {
687669
return getSupportArtifactPath(groupId, artifactId, version, ext, null);
688670
}

pom.xml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -793,13 +793,28 @@ under the License.</licenseText>
793793
<plugin>
794794
<groupId>org.apache.maven.plugins</groupId>
795795
<artifactId>maven-pmd-plugin</artifactId>
796+
<configuration>
797+
<analysisCache>true</analysisCache>
798+
<analysisCacheLocation>.pmd/.cache</analysisCacheLocation>
799+
<excludeFromFailureFile>.pmd/exclude.properties</excludeFromFailureFile>
800+
<printFailingErrors>true</printFailingErrors>
801+
</configuration>
796802
<dependencies>
797803
<dependency>
798804
<groupId>net.sourceforge.pmd</groupId>
799805
<artifactId>pmd-core</artifactId>
800806
<version>7.12.0</version>
801807
</dependency>
802808
</dependencies>
809+
<executions>
810+
<execution>
811+
<id>pmd</id>
812+
<goals>
813+
<goal>check</goal>
814+
</goals>
815+
<phase>verify</phase>
816+
</execution>
817+
</executions>
803818
</plugin>
804819
<plugin>
805820
<groupId>org.eclipse.sisu</groupId>
@@ -816,6 +831,10 @@ under the License.</licenseText>
816831
</plugins>
817832
</pluginManagement>
818833
<plugins>
834+
<plugin>
835+
<groupId>org.apache.maven.plugins</groupId>
836+
<artifactId>maven-pmd-plugin</artifactId>
837+
</plugin>
819838
<plugin>
820839
<groupId>io.github.olamy.maven.plugins</groupId>
821840
<artifactId>jacoco-aggregator-maven-plugin</artifactId>
@@ -853,6 +872,9 @@ under the License.</licenseText>
853872
<exclude>**/*.odg</exclude>
854873
<exclude>**/*.svg</exclude>
855874
<exclude>.asf.yaml</exclude>
875+
<exclude>.pmd/exclude.properties</exclude>
876+
<exclude>.pmd/obsoletes.xml</exclude>
877+
<exclude>pmd.txt</exclude>
856878
<exclude>.mvn/**</exclude>
857879
<exclude>.jbang/**</exclude>
858880
<!--
@@ -1176,5 +1198,19 @@ under the License.</licenseText>
11761198
</plugins>
11771199
</build>
11781200
</profile>
1201+
<profile>
1202+
<id>pmd</id>
1203+
<activation>
1204+
<activeByDefault>true</activeByDefault>
1205+
</activation>
1206+
<build>
1207+
<plugins>
1208+
<plugin>
1209+
<groupId>org.apache.maven.plugins</groupId>
1210+
<artifactId>maven-pmd-plugin</artifactId>
1211+
</plugin>
1212+
</plugins>
1213+
</build>
1214+
</profile>
11791215
</profiles>
11801216
</project>

0 commit comments

Comments
 (0)