[ 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)