From e0d1061e5e3acf124d66e70591e100aabdd0b62a Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Wed, 21 May 2025 21:21:06 +0200 Subject: [PATCH] [POC-FIX-PMD] maven-pmd-plugin: reactivate PMD - Error Prone --- .gitignore | 3 +- .pmd/exclude.properties | 136 ++++++++++++++++++ .../deployer/DefaultArtifactDeployer.java | 5 - .../installer/DefaultArtifactInstaller.java | 3 - .../legacy/DefaultUpdateCheckManager.java | 2 +- .../lifecycle/internal/MojoExecutor.java | 2 +- .../PluginParameterExpressionEvaluator.java | 4 +- .../PluginParameterExpressionEvaluatorV4.java | 4 +- .../maven/internal/xml/DefaultXmlService.java | 28 ---- .../plugin/coreit/CheckThreadSafetyMojo.java | 8 +- .../plugin/coreit/AbstractDependencyMojo.java | 7 +- .../java/org/apache/maven/it/Verifier.java | 18 --- pom.xml | 34 +++++ 13 files changed, 185 insertions(+), 69 deletions(-) create mode 100644 .pmd/exclude.properties diff --git a/.gitignore b/.gitignore index 08072c3a2c5a..43dfddea5f44 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ .factorypath .vscode/ repo/ -/*.svg \ No newline at end of file +/*.svg +.pmd/.cache \ No newline at end of file diff --git a/.pmd/exclude.properties b/.pmd/exclude.properties new file mode 100644 index 000000000000..86e48122ec7f --- /dev/null +++ b/.pmd/exclude.properties @@ -0,0 +1,136 @@ +org.apache.maven.ReactorReader=UselessParentheses +org.apache.maven.api.DependencyScope=UnnecessaryFullyQualifiedName +org.apache.maven.api.JavaPathType=UnnecessaryFullyQualifiedName,UnnecessaryModifier +org.apache.maven.api.MonotonicClock=UnnecessaryFullyQualifiedName +org.apache.maven.api.plugin.testing.Foo=UnnecessaryFullyQualifiedName +org.apache.maven.api.plugin.testing.MojoExtension=CollapsibleIfStatements +org.apache.maven.api.plugin.testing.stubs.SessionMock=TooManyStaticImports +org.apache.maven.api.services.ArtifactCoordinatesFactoryRequest=UnnecessaryFullyQualifiedName +org.apache.maven.api.services.ArtifactFactoryRequest=UnnecessaryFullyQualifiedName +org.apache.maven.api.services.DependencyCoordinatesFactoryRequest=UnnecessaryFullyQualifiedName +org.apache.maven.artifact.ArtifactUtils=UnnecessaryFullyQualifiedName +org.apache.maven.artifact.DefaultArtifact=UselessParentheses +org.apache.maven.artifact.handler.manager.DefaultArtifactHandlerManager=CollapsibleIfStatements +org.apache.maven.artifact.handler.manager.LegacyArtifactHandlerManager=CollapsibleIfStatements +org.apache.maven.artifact.metadata.AbstractArtifactMetadata=UnnecessaryFullyQualifiedName +org.apache.maven.artifact.repository.ArtifactRepositoryPolicy=UnnecessaryFullyQualifiedName +org.apache.maven.artifact.repository.DefaultArtifactRepository=UnusedFormalParameter +org.apache.maven.artifact.repository.metadata.AbstractRepositoryMetadata=UnnecessaryFullyQualifiedName +org.apache.maven.artifact.repository.metadata.DefaultRepositoryMetadataManager=CollapsibleIfStatements +org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer=UnnecessaryFullyQualifiedName +org.apache.maven.artifact.resolver.DaemonThreadCreator=AvoidThreadGroup +org.apache.maven.artifact.resolver.filter.ExclusionArtifactFilter=UnusedPrivateField +org.apache.maven.artifact.versioning.ComparableVersion=UselessParentheses +org.apache.maven.artifact.versioning.ListItem=UselessParentheses +org.apache.maven.artifact.versioning.VersionRange=CollapsibleIfStatements +org.apache.maven.bridge.MavenRepositorySystem=AvoidUsingHardCodedIP,UnnecessaryFullyQualifiedName,UselessParentheses +org.apache.maven.cli.CLIReportingUtils=UselessParentheses +org.apache.maven.cli.MavenCli=UnnecessaryFullyQualifiedName,UselessParentheses +org.apache.maven.cli.configuration.SettingsXmlConfigurationProcessor=UnusedFormalParameter +org.apache.maven.cli.props.MavenProperties=CollapsibleIfStatements +org.apache.maven.cli.props.MavenPropertiesLoader=UselessParentheses +org.apache.maven.cli.transfer.AbstractMavenTransferListener=UselessParentheses +org.apache.maven.cli.transfer.ConsoleMavenTransferListener=UnusedFormalParameter +org.apache.maven.cli.transfer.Slf4jMavenTransferListener=UselessParentheses +org.apache.maven.cling.executor.embedded.Context=UnusedPrivateField +org.apache.maven.cling.invoker.BaseParser=TooManyStaticImports +org.apache.maven.cling.invoker.LookupInvoker=SimplifiedTernary +org.apache.maven.cling.invoker.mvnenc.CommonsCliEncryptOptions=UnnecessaryFullyQualifiedName +org.apache.maven.cling.invoker.mvnsh.CommonsCliShellOptions=UnnecessaryFullyQualifiedName +org.apache.maven.cling.invoker.mvnsh.builtin.BuiltinShellCommandRegistry=UnusedFormalParameter +org.apache.maven.cling.logging.Slf4jLoggerManager=UselessParentheses +org.apache.maven.cling.logging.impl.UnsupportedSlf4jBindingConfiguration=UnusedFormalParameter +org.apache.maven.cling.props.MavenProperties=CollapsibleIfStatements +org.apache.maven.cling.props.MavenPropertiesLoader=UselessParentheses +org.apache.maven.cling.transfer.AbstractMavenTransferListener=UselessParentheses +org.apache.maven.cling.transfer.ConsoleMavenTransferListener=UnusedFormalParameter +org.apache.maven.cling.transfer.Slf4jMavenTransferListener=UselessParentheses +org.apache.maven.cling.utils.CLIReportingUtils=UnusedPrivateField,UselessParentheses +org.apache.maven.configuration.BasedirBeanConfigurationPathTranslator=EmptyControlStatement +org.apache.maven.di.impl.Binding=UnnecessaryFullyQualifiedName +org.apache.maven.di.impl.ReflectionUtils=UnnecessaryFullyQualifiedName +org.apache.maven.di.impl.SingletonScope=UnnecessaryFullyQualifiedName +org.apache.maven.di.impl.Types=JumbledIncrementer,UnnecessaryFullyQualifiedName +org.apache.maven.exception.DefaultExceptionHandler=UselessParentheses +org.apache.maven.execution.MavenSession=UnusedFormalParameter +org.apache.maven.graph.DefaultGraphBuilder=UselessParentheses +org.apache.maven.impl.DefaultNode=UnnecessaryFullyQualifiedName,UselessParentheses +org.apache.maven.impl.DefaultRepositoryFactory=UnnecessaryFullyQualifiedName +org.apache.maven.impl.DefaultSettingsBuilder=UnusedFormalParameter +org.apache.maven.impl.DefaultToolchainsBuilder=UnusedFormalParameter +org.apache.maven.impl.DefaultTransportProvider=UnnecessaryFullyQualifiedName +org.apache.maven.impl.InternalSession=UnnecessaryFullyQualifiedName +org.apache.maven.impl.PathSelector=CollapsibleIfStatements +org.apache.maven.impl.PropertiesAsMap=UnnecessaryFullyQualifiedName +org.apache.maven.impl.SettingsUtilsV4=UnnecessaryFullyQualifiedName +org.apache.maven.impl.model.DefaultInheritanceAssembler=UselessParentheses +org.apache.maven.impl.model.DefaultModelBuilder=UnnecessaryFullyQualifiedName +org.apache.maven.impl.model.DefaultModelInterpolator=EmptyControlStatement +org.apache.maven.impl.model.DefaultModelValidator=UnnecessaryFullyQualifiedName +org.apache.maven.impl.model.MavenModelMerger=CollapsibleIfStatements,UselessOverridingMethod +org.apache.maven.impl.model.ModelBuilderSessionState=CollapsibleIfStatements +org.apache.maven.impl.resolver.LocalSnapshotMetadataGenerator=UnusedFormalParameter +org.apache.maven.impl.resolver.scopes.Maven3ScopeManagerConfiguration=TooManyStaticImports,UnnecessaryFullyQualifiedName +org.apache.maven.impl.resolver.scopes.Maven4ScopeManagerConfiguration=TooManyStaticImports,UnnecessaryFullyQualifiedName +org.apache.maven.internal.aether.DefaultRepositorySystemSessionFactory=EmptyControlStatement +org.apache.maven.internal.impl.CleanLifecycle=UnnecessaryFullyQualifiedName +org.apache.maven.internal.impl.DefaultLifecycle=UnnecessaryFullyQualifiedName +org.apache.maven.internal.impl.DefaultLifecycleRegistry=TooManyStaticImports,UnnecessaryFullyQualifiedName +org.apache.maven.internal.impl.DefaultTypeRegistry=CollapsibleIfStatements +org.apache.maven.internal.impl.SiteLifecycle=UnnecessaryFullyQualifiedName +org.apache.maven.internal.transformation.impl.DefaultConsumerPomArtifactTransformer=UnusedPrivateMethod +org.apache.maven.internal.transformation.impl.DefaultConsumerPomBuilder=UnusedFormalParameter +org.apache.maven.jline.DefaultPrompter=UselessParentheses +org.apache.maven.jline.MessageUtils=UnnecessaryFullyQualifiedName +org.apache.maven.lifecycle.DefaultLifecycles=UnusedFormalParameter +org.apache.maven.lifecycle.LifecycleExecutionException=UnusedFormalParameter +org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator=UselessParentheses +org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator=UselessParentheses +org.apache.maven.lifecycle.internal.builder.BuilderCommon=EmptyControlStatement +org.apache.maven.lifecycle.internal.concurrent.BuildContext=CollapsibleIfStatements,EmptyControlStatement,UnusedLocalVariable +org.apache.maven.lifecycle.internal.concurrent.BuildPlanExecutor=TooManyStaticImports,UselessParentheses +org.apache.maven.lifecycle.internal.concurrent.ConcurrentLifecycleStarter=UselessParentheses +org.apache.maven.logging.LoggingExecutionListener=UselessParentheses +org.apache.maven.model.building.DefaultModelBuilder.java=UnnecessaryFullyQualifiedName +org.apache.maven.model.building.DefaultModelBuilder=UnnecessaryFullyQualifiedName +org.apache.maven.model.inheritance.DefaultInheritanceAssembler=UselessParentheses +org.apache.maven.model.io.xpp3.MavenXpp3ReaderEx=UselessOverridingMethod +org.apache.maven.model.io.xpp3.MavenXpp3WriterEx=UselessOverridingMethod +org.apache.maven.model.merge.MavenModelMerger=CollapsibleIfStatements +org.apache.maven.model.merge.ModelMerger=CollapsibleIfStatements +org.apache.maven.model.validation.DefaultModelValidator=UnusedFormalParameter +org.apache.maven.plugin.CycleDetectedInPluginGraphException=UnusedFormalParameter +org.apache.maven.plugin.PluginConfigurationException=UnusedPrivateField +org.apache.maven.plugin.PluginParameterException=UselessParentheses +org.apache.maven.plugin.PluginParameterExpressionEvaluator=UselessParentheses +org.apache.maven.plugin.PluginParameterExpressionEvaluatorV4=CollapsibleIfStatements,UselessParentheses +org.apache.maven.plugin.internal.DefaultLegacySupport=UnnecessaryFullyQualifiedName +org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver=UselessParentheses +org.apache.maven.project.BuildSession=UselessParentheses +org.apache.maven.project.DefaultProjectBuilder=UnusedFormalParameter +org.apache.maven.project.MavenProject=CollapsibleIfStatements,UnusedFormalParameter,UselessParentheses +org.apache.maven.project.ProjectSorter=UselessParentheses +org.apache.maven.project.collector.DefaultProjectsSelector=UselessParentheses +org.apache.maven.project.interpolation.RegexBasedModelInterpolator=UnusedFormalParameter +org.apache.maven.project.path.DefaultPathTranslator=CollapsibleIfStatements +org.apache.maven.repository.DefaultMirrorSelector=AvoidUsingHardCodedIP,UselessParentheses +org.apache.maven.repository.internal.DefaultModelResolver=UnnecessaryFullyQualifiedName +org.apache.maven.repository.internal.LocalSnapshotMetadataGenerator=UnusedFormalParameter +org.apache.maven.repository.internal.scopes.Maven3ScopeManagerConfiguration=TooManyStaticImports,UnnecessaryFullyQualifiedName +org.apache.maven.repository.internal.scopes.Maven4ScopeManagerConfiguration=TooManyStaticImports,UnnecessaryFullyQualifiedName +org.apache.maven.repository.legacy.DefaultWagonManager=UnusedFormalParameter +org.apache.maven.repository.legacy.LegacyRepositorySystem=UnnecessaryFullyQualifiedName +org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector=CollapsibleIfStatements +org.apache.maven.repository.legacy.resolver.transform.SnapshotTransformation=UselessParentheses +org.apache.maven.repository.metadata.ArtifactMetadata=UnusedFormalParameter +org.apache.maven.repository.metadata.DefaultGraphConflictResolver=UnusedFormalParameter +org.apache.maven.repository.metadata.MetadataGraph=UnusedFormalParameter +org.apache.maven.repository.metadata.MetadataGraphEdge=OverrideBothEqualsAndHashcode,UselessParentheses +org.apache.maven.settings.DefaultMavenSettingsBuilder=UnnecessaryFullyQualifiedName +org.apache.maven.settings.building.DefaultSettingsBuilder=UnusedFormalParameter +org.apache.maven.slf4j.DefaultLogLevelRecorder=AvoidBranchingStatementAsLastInLoop,CollapsibleIfStatements +org.apache.maven.slf4j.MavenBaseLogger=UselessParentheses +org.apache.maven.slf4j.SimpleLoggerConfiguration=UselessParentheses +org.apache.maven.toolchain.DefaultToolchainManagerV3=UnnecessaryFullyQualifiedName +org.apache.maven.toolchain.building.DefaultToolchainsBuilder=UnusedFormalParameter +org.apache.maven.toolchain.java.DefaultJavaToolChain=UselessOverridingMethod diff --git a/compat/maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java b/compat/maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java index e634a254c90d..170e37bb1c59 100644 --- a/compat/maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java +++ b/compat/maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java @@ -31,9 +31,7 @@ import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.DefaultArtifactRepository; import org.apache.maven.artifact.repository.LegacyLocalRepositoryManager; -import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata; import org.apache.maven.artifact.repository.metadata.MetadataBridge; -import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata; import org.apache.maven.plugin.LegacySupport; import org.apache.maven.project.artifact.ProjectArtifactMetadata; import org.codehaus.plexus.logging.AbstractLogEnabled; @@ -106,9 +104,6 @@ public void deploy( org.eclipse.aether.artifact.Artifact pomArtifact = new SubArtifact(mainArtifact, "", "pom"); pomArtifact = pomArtifact.setFile(projectArtifactMetadata.getFile()); request.addArtifact(pomArtifact); - } else if (metadata instanceof SnapshotArtifactRepositoryMetadata - || metadata instanceof ArtifactRepositoryMetadata) { - // eaten, handled by repo system } else { request.addMetadata(new MetadataBridge(metadata)); } diff --git a/compat/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java b/compat/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java index eda4d2f57fca..b616c73724e5 100644 --- a/compat/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java +++ b/compat/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java @@ -85,9 +85,6 @@ public void install(File source, Artifact artifact, ArtifactRepository localRepo org.eclipse.aether.artifact.Artifact pomArtifact = new SubArtifact(mainArtifact, "", "pom"); pomArtifact = pomArtifact.setFile(projectArtifactMetadata.getFile()); request.addArtifact(pomArtifact); - } else if (metadata instanceof SnapshotArtifactRepositoryMetadata - || metadata instanceof ArtifactRepositoryMetadata) { - // eaten, handled by repo system } else { request.addMetadata(new MetadataBridge(metadata)); } diff --git a/compat/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java b/compat/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java index d43758c99773..30cd57d6e779 100644 --- a/compat/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java +++ b/compat/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java @@ -303,7 +303,7 @@ private Properties read(File touchfile) { Properties props = new Properties(); try (FileInputStream in = new FileInputStream(touchfile)) { - try (FileLock lock = in.getChannel().lock(0, Long.MAX_VALUE, true)) { + try (FileLock ignored = in.getChannel().lock(0, Long.MAX_VALUE, true)) { getLogger().debug("Reading resolution-state from: " + touchfile); props.load(in); diff --git a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java index 7a479d4d2f96..04e5e1ff23b8 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java +++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java @@ -306,7 +306,7 @@ private void doExecute(MavenSession session, MojoExecution mojoExecution, Depend ensureDependenciesAreResolved(mojoDescriptor, session, dependencyContext); - try (NoExceptionCloseable lock = getProjectLock(session, mojoDescriptor)) { + try (NoExceptionCloseable ignored = getProjectLock(session, mojoDescriptor)) { doExecute2(session, mojoExecution); } finally { for (MavenProject forkedProject : forkedProjects) { diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java index 0c089a67ee92..16a2b3e26a65 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java @@ -347,9 +347,7 @@ public File alignToBaseDirectory(File file) { // TODO Copied from the DefaultInterpolator. We likely want to resurrect the PathTranslator or at least a // similar component for re-usage if (file != null) { - if (file.isAbsolute()) { - // path was already absolute, just normalize file separator and we're done - } else if (file.getPath().startsWith(File.separator)) { + if (file.getPath().startsWith(File.separator)) { // drive-relative Windows path, don't align with project directory but with drive root file = file.getAbsoluteFile(); } else { diff --git a/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorV4.java b/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorV4.java index 3264fce446ae..898c16489137 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorV4.java +++ b/impl/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorV4.java @@ -227,9 +227,7 @@ public File alignToBaseDirectory(File file) { // TODO Copied from the DefaultInterpolator. We likely want to resurrect the PathTranslator or at least a // similar component for re-usage if (file != null) { - if (file.isAbsolute()) { - // path was already absolute, just normalize file separator and we're done - } else if (file.getPath().startsWith(File.separator)) { + if (file.getPath().startsWith(File.separator)) { // drive-relative Windows path, don't align with project directory but with drive root file = file.getAbsoluteFile(); } else { diff --git a/impl/maven-xml/src/main/java/org/apache/maven/internal/xml/DefaultXmlService.java b/impl/maven-xml/src/main/java/org/apache/maven/internal/xml/DefaultXmlService.java index bb99243ccf9d..a3b2971696d8 100644 --- a/impl/maven-xml/src/main/java/org/apache/maven/internal/xml/DefaultXmlService.java +++ b/impl/maven-xml/src/main/java/org/apache/maven/internal/xml/DefaultXmlService.java @@ -392,34 +392,6 @@ private static String getChildCombinationMode(Map attributes) { return !isEmpty(value) ? value : DEFAULT_CHILDREN_COMBINATION_MODE; } - @Nullable - private static XmlNode findNodeById(@Nonnull List nodes, @Nonnull String id) { - return nodes.stream() - .filter(n -> id.equals(n.attribute(ID_COMBINATION_MODE_ATTRIBUTE))) - .findFirst() - .orElse(null); - } - - @Nullable - private static XmlNode findNodeByKeys( - @Nonnull List nodes, @Nonnull XmlNode target, @Nonnull String[] keys) { - return nodes.stream() - .filter(n -> matchesKeys(n, target, keys)) - .findFirst() - .orElse(null); - } - - private static boolean matchesKeys(@Nonnull XmlNode node1, @Nonnull XmlNode node2, @Nonnull String[] keys) { - for (String key : keys) { - String value1 = node1.attribute(key); - String value2 = node2.attribute(key); - if (!Objects.equals(value1, value2)) { - return false; - } - } - return true; - } - static class IndentingXMLStreamWriter extends StreamWriterDelegate { int depth = 0; diff --git a/its/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckThreadSafetyMojo.java b/its/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckThreadSafetyMojo.java index f8f4441bd7cf..8a1399d2a61c 100644 --- a/its/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckThreadSafetyMojo.java +++ b/its/core-it-support/core-it-plugins/maven-it-plugin-active-collection/src/main/java/org/apache/maven/plugin/coreit/CheckThreadSafetyMojo.java @@ -95,7 +95,13 @@ public void run() { getLog().info("[MAVEN-CORE-IT-LOG] Thread " + this + " uses " + tccl); Thread.currentThread().setContextClassLoader(tccl); while (go.isEmpty()) { - // wait for start + // [WARNING] PMD Failure: Rule:EmptyControlStatement Priority:3 Empty while statement. + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + // wait for the start } for (int j = 0; j < 10 * 1000; j++) { try { diff --git a/its/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java b/its/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java index 58b9e53d022d..630ad094bf05 100644 --- a/its/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java +++ b/its/core-it-support/core-it-plugins/maven-it-plugin-dependency-resolution/src/main/java/org/apache/maven/plugin/coreit/AbstractDependencyMojo.java @@ -222,11 +222,8 @@ private String calcChecksum(File jarFile) throws IOException, NoSuchAlgorithmExc MessageDigest digester = MessageDigest.getInstance("SHA-1"); try (FileInputStream is = new FileInputStream(jarFile)) { - DigestInputStream dis = new DigestInputStream(is, digester); - - for (byte[] buffer = new byte[1024 * 4]; dis.read(buffer) >= 0; ) { - // just read it - } + // [WARNING] PMD Failure: Rule:EmptyControlStatement Priority:3 Empty for statement. + new DigestInputStream(is, digester).read(new byte[1024 * 4]); } byte[] digest = digester.digest(); diff --git a/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java b/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java index 0b0dd2a1edb9..2a9df71f57bd 100644 --- a/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java +++ b/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java @@ -665,24 +665,6 @@ public String getArtifactPath(String gid, String aid, String version, String ext + executorTool.artifactPath(executorHelper.executorRequest(), gav, null); } - private String getSupportArtifactPath(String artifact) { - StringTokenizer tok = new StringTokenizer(artifact, ":"); - if (tok.countTokens() != 4) { - throw new IllegalArgumentException("Artifact must have 4 tokens: '" + artifact + "'"); - } - - String[] a = new String[4]; - for (int i = 0; i < 4; i++) { - a[i] = tok.nextToken(); - } - - String groupId = a[0]; - String artifactId = a[1]; - String version = a[2]; - String ext = a[3]; - return getSupportArtifactPath(groupId, artifactId, version, ext); - } - public String getSupportArtifactPath(String groupId, String artifactId, String version, String ext) { return getSupportArtifactPath(groupId, artifactId, version, ext, null); } diff --git a/pom.xml b/pom.xml index b59ee883bffe..659afc4bbf9c 100644 --- a/pom.xml +++ b/pom.xml @@ -793,6 +793,12 @@ under the License. org.apache.maven.plugins maven-pmd-plugin + + true + .pmd/.cache + .pmd/exclude.properties + true + net.sourceforge.pmd @@ -800,6 +806,15 @@ under the License. 7.12.0 + + + pmd + + check + + verify + + org.eclipse.sisu @@ -816,6 +831,10 @@ under the License. + + org.apache.maven.plugins + maven-pmd-plugin + io.github.olamy.maven.plugins jacoco-aggregator-maven-plugin @@ -853,6 +872,7 @@ under the License. **/*.odg **/*.svg .asf.yaml + .pmd/exclude.properties .mvn/** .jbang/**