[ 
https://issues.apache.org/jira/browse/MPMD-395?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17852706#comment-17852706
 ] 

ASF GitHub Bot commented on MPMD-395:
-------------------------------------

michael-o commented on code in PR #150:
URL: https://github.com/apache/maven-pmd-plugin/pull/150#discussion_r1629157354


##########
src/main/java/org/apache/maven/plugins/pmd/exec/PmdErrorMessageReporter.java:
##########
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.maven.plugins.pmd.exec;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sourceforge.pmd.util.log.PmdReporter;
+import org.apache.maven.reporting.MavenReportException;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.slf4j.event.Level;
+
+class PmdErrorMessageReporter implements PmdReporter {
+    private final PmdReporter delegate;
+    private List<Throwable> errors = new ArrayList<>();
+
+    PmdErrorMessageReporter(PmdReporter delegate) {
+        this.delegate = delegate;
+    }
+
+    @Override
+    public boolean isLoggable(Level level) {
+        return delegate.isLoggable(level);
+    }
+
+    @Override
+    public void logEx(Level level, @Nullable String message, Object[] 
formatArgs, @Nullable Throwable error) {
+        if (error != null) {
+            if (error instanceof RuntimeException && error.getCause() 
instanceof MavenReportException) {
+                errors.add(error.getCause());
+            } else {
+                errors.add(error);
+            }
+        }
+
+        delegate.logEx(level, message, formatArgs, error);
+    }
+
+    @Override
+    public int numErrors() {
+        return delegate.numErrors();
+    }
+
+    public void rethrowErrorsAsMavenReportException() throws 
MavenReportException {
+        if (errors.isEmpty()) {
+            return;
+        }
+
+        final MavenReportException exception;
+
+        Throwable firstError = errors.get(0);

Review Comment:
   This reminds me bit of Enforcer...



##########
src/main/java/org/apache/maven/plugins/pmd/exec/PmdErrorMessageReporter.java:
##########
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.maven.plugins.pmd.exec;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sourceforge.pmd.util.log.PmdReporter;
+import org.apache.maven.reporting.MavenReportException;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.slf4j.event.Level;
+
+class PmdErrorMessageReporter implements PmdReporter {
+    private final PmdReporter delegate;
+    private List<Throwable> errors = new ArrayList<>();
+
+    PmdErrorMessageReporter(PmdReporter delegate) {
+        this.delegate = delegate;
+    }
+
+    @Override
+    public boolean isLoggable(Level level) {
+        return delegate.isLoggable(level);
+    }
+
+    @Override
+    public void logEx(Level level, @Nullable String message, Object[] 
formatArgs, @Nullable Throwable error) {
+        if (error != null) {
+            if (error instanceof RuntimeException && error.getCause() 
instanceof MavenReportException) {
+                errors.add(error.getCause());
+            } else {
+                errors.add(error);
+            }
+        }
+
+        delegate.logEx(level, message, formatArgs, error);
+    }
+
+    @Override
+    public int numErrors() {
+        return delegate.numErrors();
+    }
+
+    public void rethrowErrorsAsMavenReportException() throws 
MavenReportException {
+        if (errors.isEmpty()) {
+            return;
+        }
+
+        final MavenReportException exception;
+
+        Throwable firstError = errors.get(0);

Review Comment:
   This reminds me bit of Enforcer approach...





> Build doesn't fail for invalid CPD format
> -----------------------------------------
>
>                 Key: MPMD-395
>                 URL: https://issues.apache.org/jira/browse/MPMD-395
>             Project: Maven PMD Plugin
>          Issue Type: Bug
>          Components: CPD
>    Affects Versions: 3.22.0
>            Reporter: Andreas Dangel
>            Assignee: Andreas Dangel
>            Priority: Major
>             Fix For: next-version
>
>
> See 
> [https://github.com/apache/maven-pmd-plugin/pull/144#issuecomment-2094371392]
>  
> If an exception occurs while the CPD report is created, the exception is only 
> logged but doesn't fail the build. This means, that build appears to be 
> successful, although it didn't produce all expected build artifacts.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to