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 <adan...@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; } }