diff --git a/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/CliOptions.java b/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/CliOptions.java index 64b8ccc0d..591ccac33 100644 --- a/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/CliOptions.java +++ b/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/CliOptions.java @@ -40,6 +40,7 @@ import com.beust.jcommander.ParameterException; import hudson.util.VersionNumber; +import java.util.Collections; /** * POJO containing CLI arguments & help. @@ -227,7 +228,7 @@ public String getHookPrefixes() { } public List getExternalHooksJars() { - return externalHooksJars; + return externalHooksJars != null ? Collections.unmodifiableList(externalHooksJars) : null; } public String getLocalCheckoutDir() { @@ -250,7 +251,7 @@ public String getTestJavaArgs() { @CheckForNull public List getOverridenPlugins() { - return overridenPlugins; + return overridenPlugins != null ? Collections.unmodifiableList(overridenPlugins) : null; } @CheckForNull diff --git a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatResult.java b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatResult.java index 4937fa4cf..1732e97df 100644 --- a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatResult.java +++ b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatResult.java @@ -25,6 +25,7 @@ */ package org.jenkins.tools.test.model; +import java.util.Collections; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -101,6 +102,6 @@ public void setBuildLogPath(String buildLogPath) { } public Set getTestsDetails() { - return testDetails; + return Collections.unmodifiableSet(testDetails); } } \ No newline at end of file diff --git a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java index c40f541dc..9e6bfef68 100644 --- a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java +++ b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java @@ -25,6 +25,7 @@ */ package org.jenkins.tools.test.model; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -45,6 +46,7 @@ * * @author Frederic Camblor */ +@SuppressFBWarnings(value = {"EI_EXPOSE_REP", "EI_EXPOSE_REP2"}, justification = "limited callers should know not to mutate") public class PluginCompatTesterConfig { private static final Logger LOGGER = Logger.getLogger(PluginCompatTesterConfig.class.getName()); diff --git a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PomData.java b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PomData.java index e5bc8ac19..be60f61f4 100644 --- a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PomData.java +++ b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PomData.java @@ -25,6 +25,7 @@ */ package org.jenkins.tools.test.model; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.List; import javax.annotation.CheckForNull; @@ -65,6 +66,7 @@ public void setConnectionUrl(String connectionUrl) { this.connectionUrl = connectionUrl; } + @SuppressFBWarnings(value = "EI_EXPOSE_REP", justification = "Deliberately mutable") public List getWarningMessages() { return warningMessages; } diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java index baf4a0d50..2775acf0d 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java @@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.AbortException; import hudson.Functions; import hudson.model.UpdateSite; @@ -132,6 +133,7 @@ public class PluginCompatTester { private List splits; private Set splitCycles; + @SuppressFBWarnings(value = "EI_EXPOSE_REP2", justification = "not mutated after this point I hope") public PluginCompatTester(PluginCompatTesterConfig config){ this.config = config; runner = new ExternalMavenRunner(config.getExternalMaven()); diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/exception/PomExecutionException.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/exception/PomExecutionException.java index ae82ed754..e8d091c88 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/exception/PomExecutionException.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/exception/PomExecutionException.java @@ -25,6 +25,7 @@ */ package org.jenkins.tools.test.exception; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; @@ -56,6 +57,7 @@ public PomExecutionException(PomExecutionException exceptionToCopy){ this(exceptionToCopy.getMessage(), exceptionToCopy.succeededPluginArtifactIds, exceptionToCopy.exceptionsThrown, exceptionToCopy.pomWarningMessages, exceptionToCopy.testDetails); } + @SuppressFBWarnings(value = "EI_EXPOSE_REP2", justification = "oh well") public PomExecutionException(String message, List succeededPluginArtifactIds, List exceptionsThrown, List pomWarningMessages, ExecutedTestNamesDetails testDetails){ super(message, exceptionsThrown.isEmpty() ? null : exceptionsThrown.iterator().next()); this.exceptionsThrown = new ArrayList<>(exceptionsThrown); @@ -77,10 +79,12 @@ public String getErrorMessage(){ return strBldr.toString(); } + @SuppressFBWarnings(value = "EI_EXPOSE_REP", justification = "deliberately mutable") public List getPomWarningMessages() { return pomWarningMessages; } + @SuppressFBWarnings(value = "EI_EXPOSE_REP", justification = "oh well") public ExecutedTestNamesDetails getTestDetails() { return testDetails; } diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/ExampleMultiParent.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/ExampleMultiParent.java index d1af81d98..5f6fcdaf4 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/ExampleMultiParent.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/ExampleMultiParent.java @@ -3,6 +3,7 @@ import hudson.model.UpdateSite.Plugin; import java.io.File; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; import org.apache.maven.scm.ScmFileSet; @@ -32,7 +33,7 @@ public ExampleMultiParent() {} * All the plugins that are part of this repository. */ public List transformedPlugins() { - return allBundlePlugins; + return Collections.unmodifiableList(allBundlePlugins); } /* diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/NonStandardTagHook.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/NonStandardTagHook.java index 05fd0c124..e716c93e7 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/NonStandardTagHook.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/NonStandardTagHook.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -88,6 +89,6 @@ public Map action(Map info) throws Exception { @Override public List transformedPlugins() { - return transformedPlugins; + return Collections.unmodifiableList(transformedPlugins); } } diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/SkipUIHelperPlugins.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/SkipUIHelperPlugins.java index f86780ed1..aeb488d45 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/SkipUIHelperPlugins.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/hook/SkipUIHelperPlugins.java @@ -25,7 +25,7 @@ public SkipUIHelperPlugins() {} @Override public List transformedPlugins() { - return allBundlePlugins; + return Collections.unmodifiableList(allBundlePlugins); } /** diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/logging/SystemIOLoggerFilter.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/logging/SystemIOLoggerFilter.java index ceb629528..afd79505d 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/logging/SystemIOLoggerFilter.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/logging/SystemIOLoggerFilter.java @@ -25,6 +25,7 @@ */ package org.jenkins.tools.test.logging; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -52,6 +53,7 @@ public File getCurrentPSFile() { return currentPSFile; } + @SuppressFBWarnings(value = "EI_EXPOSE_REP2", justification = "as designed") public static class SystemIOWrapper extends PrintStream { private SystemIOLoggerFilter loggerFilter; private PrintStream systemIO; diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/model/MavenBom.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/model/MavenBom.java index 2987e6e9d..672e85000 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/model/MavenBom.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/model/MavenBom.java @@ -1,5 +1,6 @@ package org.jenkins.tools.test.model; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -29,6 +30,7 @@ public MavenBom(File path) throws IOException, XmlPullParserException { } } + @SuppressFBWarnings(value = "EI_EXPOSE_REP", justification = "so be it") public Model getModel() { return contents; } diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/model/TestExecutionResult.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/model/TestExecutionResult.java index a183b87aa..4e44e0636 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/model/TestExecutionResult.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/model/TestExecutionResult.java @@ -25,6 +25,7 @@ */ package org.jenkins.tools.test.model; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collections; import java.util.List; import java.util.Set; @@ -46,11 +47,13 @@ public TestExecutionResult(List pomWarningMessages){ this(pomWarningMessages, new ExecutedTestNamesDetails()); } + @SuppressFBWarnings(value = "EI_EXPOSE_REP", justification = "oh well") public TestExecutionResult(List pomWarningMessages, ExecutedTestNamesDetails testDetails){ this.pomWarningMessages = Collections.unmodifiableList(pomWarningMessages); this.testDetails = testDetails; } + @SuppressFBWarnings(value = "EI_EXPOSE_REP", justification = "oh well") public ExecutedTestNamesDetails getTestDetails() { return testDetails; } diff --git a/pom.xml b/pom.xml index 7a40231e8..111c549f5 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.jenkins-ci jenkins - 1.57 + 1.67