You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ad...@apache.org on 2023/01/26 14:08:37 UTC
[maven-pmd-plugin] branch pmd7 updated: Remove CPDRenderer workaround
This is an automated email from the ASF dual-hosted git repository.
adangel pushed a commit to branch pmd7
in repository https://gitbox.apache.org/repos/asf/maven-pmd-plugin.git
The following commit(s) were added to refs/heads/pmd7 by this push:
new cb73659 Remove CPDRenderer workaround
cb73659 is described below
commit cb7365979490b9a29fd63f0d9468be467b17e94b
Author: Andreas Dangel <ad...@apache.org>
AuthorDate: Thu Jan 26 14:59:24 2023 +0100
Remove CPDRenderer workaround
---
.../net/sourceforge/pmd/cpd/CPDReportFriend.java | 44 ----------------------
.../sourceforge/pmd/cpd/renderer/CPDRenderer.java | 38 -------------------
.../apache/maven/plugins/pmd/exec/CpdExecutor.java | 30 +++------------
...rtRendererAdapter.java => CpdReportFilter.java} | 31 +++++++++------
4 files changed, 26 insertions(+), 117 deletions(-)
diff --git a/src/main/java/net/sourceforge/pmd/cpd/CPDReportFriend.java b/src/main/java/net/sourceforge/pmd/cpd/CPDReportFriend.java
deleted file mode 100644
index d50a2a8..0000000
--- a/src/main/java/net/sourceforge/pmd/cpd/CPDReportFriend.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package net.sourceforge.pmd.cpd;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Allows to create a new CPDReport as the ctor is package private
- * in PMD.
- *
- * <p>Only needed temporarily until <a href="https://github.com/pmd/pmd/issues/4340">[core] Allow to filter found
- * matches in CPDReport #4340</a> is done.
- */
-public final class CPDReportFriend
-{
-
- private CPDReportFriend()
- {
- // utility
- }
-
- public static CPDReport newReport( List<Match> matches, Map<String, Integer> numberOfTokensPerFile )
- {
- return new CPDReport( matches, numberOfTokensPerFile );
- }
-}
diff --git a/src/main/java/net/sourceforge/pmd/cpd/renderer/CPDRenderer.java b/src/main/java/net/sourceforge/pmd/cpd/renderer/CPDRenderer.java
deleted file mode 100644
index 6b4a5f3..0000000
--- a/src/main/java/net/sourceforge/pmd/cpd/renderer/CPDRenderer.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package net.sourceforge.pmd.cpd.renderer;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.IOException;
-import java.io.Writer;
-import java.util.Iterator;
-
-import net.sourceforge.pmd.cpd.Match;
-
-/**
- * Readd this interface here. Not needed anymore,
- * once <a href="https://github.com/pmd/pmd/pull/4343">[core] CPD - implement
- * CPDReportRenderer for all renderers #4343</a>
- * is done.
- */
-@Deprecated
-public interface CPDRenderer
-{
- void render( Iterator<Match> var1, Writer var2 ) throws IOException;
-}
diff --git a/src/main/java/org/apache/maven/plugins/pmd/exec/CpdExecutor.java b/src/main/java/org/apache/maven/plugins/pmd/exec/CpdExecutor.java
index b50aea4..d840007 100644
--- a/src/main/java/org/apache/maven/plugins/pmd/exec/CpdExecutor.java
+++ b/src/main/java/org/apache/maven/plugins/pmd/exec/CpdExecutor.java
@@ -27,8 +27,6 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Objects;
import org.apache.maven.plugin.MojoExecutionException;
@@ -41,14 +39,12 @@ import org.slf4j.LoggerFactory;
import net.sourceforge.pmd.cpd.CPD;
import net.sourceforge.pmd.cpd.CPDConfiguration;
import net.sourceforge.pmd.cpd.CPDReport;
-import net.sourceforge.pmd.cpd.CPDReportFriend;
import net.sourceforge.pmd.cpd.CSVRenderer;
import net.sourceforge.pmd.cpd.EcmascriptLanguage;
import net.sourceforge.pmd.cpd.JSPLanguage;
import net.sourceforge.pmd.cpd.JavaLanguage;
import net.sourceforge.pmd.cpd.Language;
import net.sourceforge.pmd.cpd.LanguageFactory;
-import net.sourceforge.pmd.cpd.Match;
import net.sourceforge.pmd.cpd.SimpleRenderer;
import net.sourceforge.pmd.cpd.XMLRenderer;
import net.sourceforge.pmd.cpd.renderer.CPDReportRenderer;
@@ -299,11 +295,11 @@ public class CpdExecutor extends Executor
}
else if ( "csv".equals( format ) )
{
- renderer = new CPDReportRendererAdapter( new CSVRenderer() );
+ renderer = new CSVRenderer();
}
else if ( "txt".equals( format ) )
{
- renderer = new CPDReportRendererAdapter( new SimpleRenderer() );
+ renderer = new SimpleRenderer();
}
else if ( !"".equals( format ) && !"none".equals( format ) )
{
@@ -325,23 +321,9 @@ public class CpdExecutor extends Executor
{
LOG.debug( "Filtering duplications. Using " + excludeDuplicationsFromFile.countExclusions()
+ " configured exclusions." );
-
- List<Match> filteredMatches = new ArrayList<>();
- int excludedDuplications = 0;
- for ( Match match : report.getMatches() )
- {
- if ( excludeDuplicationsFromFile.isExcludedFromFailure( match ) )
- {
- excludedDuplications++;
- }
- else
- {
- filteredMatches.add( match );
- }
- }
-
- LOG.debug( "Excluded " + excludedDuplications + " duplications." );
- return CPDReportFriend.newReport( filteredMatches, report.getNumberOfTokensPerFile() );
+ CpdReportFilter filter = new CpdReportFilter( excludeDuplicationsFromFile );
+ CPDReport filteredReport = report.filterMatches( filter );
+ LOG.debug( "Excluded " + filter.getExcludedDuplications() + " duplications." );
+ return filteredReport;
}
-
}
diff --git a/src/main/java/org/apache/maven/plugins/pmd/exec/CPDReportRendererAdapter.java b/src/main/java/org/apache/maven/plugins/pmd/exec/CpdReportFilter.java
similarity index 54%
rename from src/main/java/org/apache/maven/plugins/pmd/exec/CPDReportRendererAdapter.java
rename to src/main/java/org/apache/maven/plugins/pmd/exec/CpdReportFilter.java
index c161480..c01157b 100644
--- a/src/main/java/org/apache/maven/plugins/pmd/exec/CPDReportRendererAdapter.java
+++ b/src/main/java/org/apache/maven/plugins/pmd/exec/CpdReportFilter.java
@@ -19,25 +19,34 @@ package org.apache.maven.plugins.pmd.exec;
* under the License.
*/
-import java.io.IOException;
-import java.io.Writer;
+import org.apache.maven.plugins.pmd.ExcludeDuplicationsFromFile;
-import net.sourceforge.pmd.cpd.CPDReport;
-import net.sourceforge.pmd.cpd.renderer.CPDRenderer;
-import net.sourceforge.pmd.cpd.renderer.CPDReportRenderer;
+import net.sourceforge.pmd.cpd.Match;
+import net.sourceforge.pmd.util.Predicate;
-final class CPDReportRendererAdapter implements CPDReportRenderer
+class CpdReportFilter implements Predicate<Match>
{
- private final CPDRenderer renderer;
+ private final ExcludeDuplicationsFromFile excludeDuplicationsFromFile;
+ private int excludedDuplications = 0;
- CPDReportRendererAdapter( CPDRenderer renderer )
+ CpdReportFilter( ExcludeDuplicationsFromFile excludeDuplicationsFromFile )
{
- this.renderer = renderer;
+ this.excludeDuplicationsFromFile = excludeDuplicationsFromFile;
}
@Override
- public void render( CPDReport cpdReport, Writer writer ) throws IOException
+ public boolean test( Match match )
{
- renderer.render( cpdReport.getMatches().iterator(), writer );
+ if ( excludeDuplicationsFromFile.isExcludedFromFailure( match ) )
+ {
+ excludedDuplications++;
+ return false;
+ }
+ return true;
+ }
+
+ int getExcludedDuplications()
+ {
+ return excludedDuplications;
}
}