diff --git a/cli/src/main/java/hudson/cli/FullDuplexHttpStream.java b/cli/src/main/java/hudson/cli/FullDuplexHttpStream.java index 9096794e8f..fec9d7d3b9 100644 --- a/cli/src/main/java/hudson/cli/FullDuplexHttpStream.java +++ b/cli/src/main/java/hudson/cli/FullDuplexHttpStream.java @@ -34,7 +34,6 @@ public class FullDuplexHttpStream { * A way to upload data to the server. * You will need to write to this and {@link OutputStream#flush} it to finish establishing a connection. */ - @SuppressFBWarnings("EI_EXPOSE_REP") public OutputStream getOutputStream() { return output; } diff --git a/core/pom.xml b/core/pom.xml index 33526d21e9..b85438f1c6 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -42,8 +42,6 @@ THE SOFTWARE. true 2.2 2.8.3 - - High diff --git a/core/src/main/java/hudson/FilePath.java b/core/src/main/java/hudson/FilePath.java index fc6d6f39cb..e4850c6361 100644 --- a/core/src/main/java/hudson/FilePath.java +++ b/core/src/main/java/hudson/FilePath.java @@ -2687,6 +2687,7 @@ public final class FilePath implements SerializableOnlyOverRemoting { scanner.scan(base, reading(new FileVisitor() { private boolean exceptionEncountered; private boolean logMessageShown; + @SuppressFBWarnings(value = "PATH_TRAVERSAL_IN", justification = "TODO needs triage") @Override public void visit(File f, String relativePath) throws IOException { if (f.isFile()) { @@ -2720,6 +2721,7 @@ public final class FilePath implements SerializableOnlyOverRemoting { public boolean understandsSymlink() { return true; } + @SuppressFBWarnings(value = "PATH_TRAVERSAL_IN", justification = "TODO needs triage") @Override public void visitSymlink(File link, String target, String relativePath) throws IOException { try { @@ -2917,7 +2919,7 @@ public final class FilePath implements SerializableOnlyOverRemoting { * Default bound for {@link #validateAntFileMask(String, int, boolean)}. * @since 1.592 */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static int VALIDATE_ANT_FILE_MASK_BOUND = SystemProperties.getInteger(FilePath.class.getName() + ".VALIDATE_ANT_FILE_MASK_BOUND", 10000); /** @@ -3298,7 +3300,7 @@ public final class FilePath implements SerializableOnlyOverRemoting { private static final long serialVersionUID = 1L; - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "TODO needs triage") public static int SIDE_BUFFER_SIZE = 1024; private static final Logger LOGGER = Logger.getLogger(FilePath.class.getName()); diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java index 2242112cb6..2d54d3358f 100644 --- a/core/src/main/java/hudson/Functions.java +++ b/core/src/main/java/hudson/Functions.java @@ -187,7 +187,7 @@ public class Functions { private static Logger LOGGER = Logger.getLogger(Functions.class.getName()); @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* non-final */ boolean UI_REFRESH = SystemProperties.getBoolean("jenkins.ui.refresh"); public Functions() { @@ -636,7 +636,7 @@ public class Functions { /** * Set to true if you need to use the debug version of YUI. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean DEBUG_YUI = SystemProperties.getBoolean("debug.YUI"); /** diff --git a/core/src/main/java/hudson/Plugin.java b/core/src/main/java/hudson/Plugin.java index 87ab160949..0942db8fd9 100644 --- a/core/src/main/java/hudson/Plugin.java +++ b/core/src/main/java/hudson/Plugin.java @@ -310,7 +310,7 @@ public abstract class Plugin implements Saveable, StaplerProxy { * Escape hatch for StaplerProxy-based access control */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean SKIP_PERMISSION_CHECK = SystemProperties.getBoolean(Plugin.class.getName() + ".skipPermissionCheck"); /** diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java index e45bc76ba1..9902dc3921 100644 --- a/core/src/main/java/hudson/PluginManager.java +++ b/core/src/main/java/hudson/PluginManager.java @@ -2248,7 +2248,7 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas return "classLoader " + getClass().getName(); } } - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean FAST_LOOKUP = !SystemProperties.getBoolean(PluginManager.class.getName()+".noFastLookup"); /** @deprecated in Jenkins 2.222 use {@link Jenkins#ADMINISTER} instead */ @@ -2471,6 +2471,6 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas * Escape hatch for StaplerProxy-based access control */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean SKIP_PERMISSION_CHECK = SystemProperties.getBoolean(PluginManager.class.getName() + ".skipPermissionCheck"); } diff --git a/core/src/main/java/hudson/Proc.java b/core/src/main/java/hudson/Proc.java index 0f8f5a47f4..dd94d2097c 100644 --- a/core/src/main/java/hudson/Proc.java +++ b/core/src/main/java/hudson/Proc.java @@ -503,7 +503,7 @@ public abstract class Proc { /** * Debug switch to have the thread display the process it's waiting for. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for debugging") public static boolean SHOW_PID = false; /** diff --git a/core/src/main/java/hudson/WebAppMain.java b/core/src/main/java/hudson/WebAppMain.java index c7fdcced02..f21167ff88 100644 --- a/core/src/main/java/hudson/WebAppMain.java +++ b/core/src/main/java/hudson/WebAppMain.java @@ -261,6 +261,7 @@ public class WebAppMain implements ServletContextListener { final File _home = home; initThread = new Thread("Jenkins initialization thread") { + @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", justification = "TODO needs triage") @Override public void run() { boolean success = false; @@ -324,7 +325,7 @@ public class WebAppMain implements ServletContextListener { /** * Installs log handler to monitor all Hudson logs. */ - @SuppressFBWarnings("LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE") + @SuppressFBWarnings(value = "LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE", justification = "TODO needs triage") private void installLogger() { Jenkins.logRecords = handler.getView(); Logger.getLogger("").addHandler(handler); diff --git a/core/src/main/java/hudson/console/ConsoleNote.java b/core/src/main/java/hudson/console/ConsoleNote.java index 1086fb8b3c..443625350c 100644 --- a/core/src/main/java/hudson/console/ConsoleNote.java +++ b/core/src/main/java/hudson/console/ConsoleNote.java @@ -144,7 +144,7 @@ public abstract class ConsoleNote implements Serializable, Describable, StaplerProxy, StaplerFallback, ViewGroup, AccessControlled, DescriptorByNameOwner { - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean LOG_STARTUP_PERFORMANCE = SystemProperties.getBoolean(Jenkins.class.getName() + "." + "logStartupPerformance", false); private static final Logger LOGGER = Logger.getLogger(AbstractCIBase.class.getName()); diff --git a/core/src/main/java/hudson/model/AbstractItem.java b/core/src/main/java/hudson/model/AbstractItem.java index 329dc5167b..38f2d33ce8 100644 --- a/core/src/main/java/hudson/model/AbstractItem.java +++ b/core/src/main/java/hudson/model/AbstractItem.java @@ -967,7 +967,7 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet * Escape hatch for StaplerProxy-based access control */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean SKIP_PERMISSION_CHECK = SystemProperties.getBoolean(AbstractItem.class.getName() + ".skipPermissionCheck"); /** diff --git a/core/src/main/java/hudson/model/Actionable.java b/core/src/main/java/hudson/model/Actionable.java index a67eb41b85..90be28c893 100644 --- a/core/src/main/java/hudson/model/Actionable.java +++ b/core/src/main/java/hudson/model/Actionable.java @@ -25,7 +25,6 @@ package hudson.model; import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.Nullable; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Util; import java.util.ArrayList; import java.util.Collection; @@ -147,7 +146,6 @@ public abstract class Actionable extends AbstractModelObject implements ModelObj * Note: this method will always modify the actions */ @SuppressWarnings("ConstantConditions") - @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") public void addAction(@NonNull Action a) { if(a==null) { throw new IllegalArgumentException("Action must be non-null"); @@ -170,7 +168,6 @@ public abstract class Actionable extends AbstractModelObject implements ModelObj * example in cases where the caller would need to persist the {@link Actionable} in order to persist the change * and there is a desire to elide unnecessary persistence of unmodified objects. */ - @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") public void replaceAction(@NonNull Action a) { addOrReplaceAction(a); } @@ -189,7 +186,6 @@ public abstract class Actionable extends AbstractModelObject implements ModelObj * @since 2.29 */ @SuppressWarnings("ConstantConditions") - @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") public boolean addOrReplaceAction(@NonNull Action a) { if (a == null) { throw new IllegalArgumentException("Action must be non-null"); @@ -247,7 +243,6 @@ public abstract class Actionable extends AbstractModelObject implements ModelObj * @since 2.29 */ @SuppressWarnings("ConstantConditions") - @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") public boolean removeActions(@NonNull Class clazz) { if (clazz == null) { throw new IllegalArgumentException("Action type must be non-null"); @@ -279,7 +274,6 @@ public abstract class Actionable extends AbstractModelObject implements ModelObj * @since 2.29 */ @SuppressWarnings("ConstantConditions") - @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") public boolean replaceActions(@NonNull Class clazz, @NonNull Action a) { if (clazz == null) { throw new IllegalArgumentException("Action type must be non-null"); diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java index 9c11df5c4f..61a6e127fc 100644 --- a/core/src/main/java/hudson/model/Computer.java +++ b/core/src/main/java/hudson/model/Computer.java @@ -280,7 +280,6 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces } @SuppressWarnings({"ConstantConditions","deprecation"}) - @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") @Override public void addAction(@NonNull Action a) { if (a == null) { @@ -1607,7 +1606,7 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces * Escape hatch for StaplerProxy-based access control */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean SKIP_PERMISSION_CHECK = SystemProperties.getBoolean(Computer.class.getName() + ".skipPermissionCheck"); /** diff --git a/core/src/main/java/hudson/model/FileParameterValue.java b/core/src/main/java/hudson/model/FileParameterValue.java index 3e0ff4cda0..ebc4461087 100644 --- a/core/src/main/java/hudson/model/FileParameterValue.java +++ b/core/src/main/java/hudson/model/FileParameterValue.java @@ -72,7 +72,7 @@ public class FileParameterValue extends ParameterValue { * It's not recommended to enable for security reasons. That option is only present for backward compatibility. */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean ALLOW_FOLDER_TRAVERSAL_OUTSIDE_WORKSPACE = SystemProperties.getBoolean(FileParameterValue.class.getName() + ".allowFolderTraversalOutsideWorkspace"); @@ -152,6 +152,7 @@ public class FileParameterValue extends ParameterValue { @Override public BuildWrapper createBuildWrapper(AbstractBuild build) { return new BuildWrapper() { + @SuppressFBWarnings(value = {"FILE_UPLOAD_FILENAME", "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"}, justification = "TODO needs triage") @Override public Environment setUp(AbstractBuild build, Launcher launcher, BuildListener listener) throws IOException, InterruptedException { if (!StringUtils.isEmpty(location) && !StringUtils.isEmpty(file.getName())) { diff --git a/core/src/main/java/hudson/model/Job.java b/core/src/main/java/hudson/model/Job.java index 208298c218..d8489b76ba 100644 --- a/core/src/main/java/hudson/model/Job.java +++ b/core/src/main/java/hudson/model/Job.java @@ -29,6 +29,7 @@ import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT; import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.BulkChange; import hudson.EnvVars; import hudson.Extension; @@ -130,6 +131,7 @@ import org.kohsuke.stapler.verb.POST; * * @author Kohsuke Kawaguchi */ +@SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "TODO needs triage") public abstract class Job, RunT extends Run> extends AbstractItem implements ExtensionPoint, StaplerOverridable, ModelObjectWithChildren { diff --git a/core/src/main/java/hudson/model/LoadStatistics.java b/core/src/main/java/hudson/model/LoadStatistics.java index 1b42c16268..a1d84a6b35 100644 --- a/core/src/main/java/hudson/model/LoadStatistics.java +++ b/core/src/main/java/hudson/model/LoadStatistics.java @@ -378,7 +378,7 @@ public abstract class LoadStatistics { /** * Load statistics clock cycle in milliseconds. Specify a small value for quickly debugging this feature and node provisioning through cloud. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static int CLOCK = SystemProperties.getInteger(LoadStatistics.class.getName() + ".clock", (int)TimeUnit.SECONDS.toMillis(10)); /** diff --git a/core/src/main/java/hudson/model/Node.java b/core/src/main/java/hudson/model/Node.java index 11d1f3b3e1..03c6d54026 100644 --- a/core/src/main/java/hudson/model/Node.java +++ b/core/src/main/java/hudson/model/Node.java @@ -99,7 +99,7 @@ public abstract class Node extends AbstractModelObject implements Reconfigurable private static final Logger LOGGER = Logger.getLogger(Node.class.getName()); /** @see JENKINS-46652 */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* not final */ boolean SKIP_BUILD_CHECK_ON_FLYWEIGHTS = SystemProperties.getBoolean(Node.class.getName() + ".SKIP_BUILD_CHECK_ON_FLYWEIGHTS", true); /** diff --git a/core/src/main/java/hudson/model/PermalinkProjectAction.java b/core/src/main/java/hudson/model/PermalinkProjectAction.java index bb99b26e8c..301c966777 100644 --- a/core/src/main/java/hudson/model/PermalinkProjectAction.java +++ b/core/src/main/java/hudson/model/PermalinkProjectAction.java @@ -24,6 +24,7 @@ package hudson.model; import edu.umd.cs.findbugs.annotations.CheckForNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import jenkins.model.PeepholePermalink; @@ -136,6 +137,7 @@ public interface PermalinkProjectAction extends Action { return "lastSuccessfulBuild"; } + @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "TODO needs triage") @Override public boolean apply(Run run) { return !run.isBuilding() && run.getResult().isBetterOrEqualTo(Result.UNSTABLE); diff --git a/core/src/main/java/hudson/model/Run.java b/core/src/main/java/hudson/model/Run.java index c573381488..d72b24a668 100644 --- a/core/src/main/java/hudson/model/Run.java +++ b/core/src/main/java/hudson/model/Run.java @@ -2652,7 +2652,7 @@ public abstract class Run ,RunT extends Run * See JENKINS-22346. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean ALLOW_NON_EXISTENT_USER_TO_LOGIN = SystemProperties.getBoolean(User.class.getName() + ".allowNonExistentUserToLogin"); /** @@ -157,7 +157,7 @@ public class User extends AbstractModelObject implements AccessControlled, Descr * SECURITY-406. */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean ALLOW_USER_CREATION_VIA_URL = SystemProperties.getBoolean(User.class.getName() + ".allowUserCreationViaUrl"); /** diff --git a/core/src/main/java/hudson/model/queue/WorkUnitContext.java b/core/src/main/java/hudson/model/queue/WorkUnitContext.java index c08d5c6e88..1b53485527 100644 --- a/core/src/main/java/hudson/model/queue/WorkUnitContext.java +++ b/core/src/main/java/hudson/model/queue/WorkUnitContext.java @@ -23,6 +23,7 @@ */ package hudson.model.queue; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.ExtensionList; import hudson.model.Action; import hudson.model.Executor; @@ -79,6 +80,7 @@ public final class WorkUnitContext { // +1 for the main task int workUnitSize = task.getSubTasks().size(); startLatch = new Latch(workUnitSize) { + @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "TODO needs triage") @Override protected void onCriteriaMet() { // on behalf of the member Executors, diff --git a/core/src/main/java/hudson/os/SU.java b/core/src/main/java/hudson/os/SU.java index e526caa44d..9103c72a86 100644 --- a/core/src/main/java/hudson/os/SU.java +++ b/core/src/main/java/hudson/os/SU.java @@ -26,6 +26,7 @@ package hudson.os; import static hudson.util.jna.GNUCLibrary.LIBC; import com.sun.solaris.EmbeddedSu; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.FilePath; import hudson.Launcher.LocalLauncher; import hudson.Util; @@ -81,6 +82,7 @@ public abstract class SU { return "sudo"; } + @SuppressFBWarnings(value = {"COMMAND_INJECTION", "DM_DEFAULT_ENCODING"}, justification = "TODO needs triage") @Override protected Process sudoWithPass(ArgumentListBuilder args) throws IOException { args.prepend(sudoExe(),"-S"); @@ -105,6 +107,7 @@ public abstract class SU { return "/usr/bin/pfexec"; } + @SuppressFBWarnings(value = "COMMAND_INJECTION", justification = "TODO needs triage") @Override protected Process sudoWithPass(ArgumentListBuilder args) throws IOException { listener.getLogger().println("Running with embedded_su"); diff --git a/core/src/main/java/hudson/search/Search.java b/core/src/main/java/hudson/search/Search.java index 4da199fa2c..372d4bb546 100644 --- a/core/src/main/java/hudson/search/Search.java +++ b/core/src/main/java/hudson/search/Search.java @@ -300,6 +300,7 @@ public class Search implements StaplerProxy { prefixMatch = i.getPath().startsWith(tokenList)?1:0; } + @SuppressFBWarnings(value = "EQ_COMPARETO_USE_OBJECT_EQUALS", justification = "TODO needs triage") @Override public int compareTo(Tag that) { int r = this.prefixMatch -that.prefixMatch; @@ -422,7 +423,7 @@ public class Search implements StaplerProxy { /** * Escape hatch for StaplerProxy-based access control */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") @Restricted(NoExternalUse.class) public static /* Script Console modifiable */ boolean SKIP_PERMISSION_CHECK = SystemProperties.getBoolean(Search.class.getName() + ".skipPermissionCheck"); diff --git a/core/src/main/java/hudson/security/TokenBasedRememberMeServices2.java b/core/src/main/java/hudson/security/TokenBasedRememberMeServices2.java index dc00f93a43..d9920e625f 100644 --- a/core/src/main/java/hudson/security/TokenBasedRememberMeServices2.java +++ b/core/src/main/java/hudson/security/TokenBasedRememberMeServices2.java @@ -66,7 +66,7 @@ public class TokenBasedRememberMeServices2 extends TokenBasedRememberMeServices /** * Escape hatch for the check on the maximum date for the expiration duration of the remember me cookie */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean SKIP_TOO_FAR_EXPIRATION_DATE_CHECK = SystemProperties.getBoolean(TokenBasedRememberMeServices2.class.getName() + ".skipTooFarExpirationDateCheck"); @@ -169,6 +169,7 @@ public class TokenBasedRememberMeServices2 extends TokenBasedRememberMeServices } } + @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "TODO needs triage") @Override protected Authentication createSuccessfulAuthentication(HttpServletRequest request, UserDetails userDetails) { Authentication auth = super.createSuccessfulAuthentication(request, userDetails); diff --git a/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java b/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java index fda593033e..cd1c0f7957 100644 --- a/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java +++ b/core/src/main/java/hudson/security/csrf/DefaultCrumbIssuer.java @@ -39,7 +39,7 @@ public class DefaultCrumbIssuer extends CrumbIssuer { private boolean excludeClientIPFromCrumb; @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* non-final: Groovy Console */ boolean EXCLUDE_SESSION_ID = SystemProperties.getBoolean(DefaultCrumbIssuer.class.getName() + ".EXCLUDE_SESSION_ID"); @DataBoundConstructor diff --git a/core/src/main/java/hudson/security/csrf/GlobalCrumbIssuerConfiguration.java b/core/src/main/java/hudson/security/csrf/GlobalCrumbIssuerConfiguration.java index b8c3d00fd9..70e511cae7 100644 --- a/core/src/main/java/hudson/security/csrf/GlobalCrumbIssuerConfiguration.java +++ b/core/src/main/java/hudson/security/csrf/GlobalCrumbIssuerConfiguration.java @@ -76,6 +76,6 @@ public class GlobalCrumbIssuerConfiguration extends GlobalConfiguration { } @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* non-final */ boolean DISABLE_CSRF_PROTECTION = SystemProperties.getBoolean(GlobalCrumbIssuerConfiguration.class.getName() + ".DISABLE_CSRF_PROTECTION"); } diff --git a/core/src/main/java/hudson/slaves/CloudSlaveRetentionStrategy.java b/core/src/main/java/hudson/slaves/CloudSlaveRetentionStrategy.java index 8d619e7163..baa30ace25 100644 --- a/core/src/main/java/hudson/slaves/CloudSlaveRetentionStrategy.java +++ b/core/src/main/java/hudson/slaves/CloudSlaveRetentionStrategy.java @@ -72,7 +72,7 @@ public class CloudSlaveRetentionStrategy extends RetentionSt } // for debugging, it's convenient to be able to reduce this time - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static long TIMEOUT = SystemProperties.getLong(CloudSlaveRetentionStrategy.class.getName()+".timeout", TimeUnit.MINUTES.toMillis(10)); private static final Logger LOGGER = Logger.getLogger(CloudSlaveRetentionStrategy.class.getName()); diff --git a/core/src/main/java/hudson/slaves/NodeProvisioner.java b/core/src/main/java/hudson/slaves/NodeProvisioner.java index ce9916d84c..ec3e7d35da 100644 --- a/core/src/main/java/hudson/slaves/NodeProvisioner.java +++ b/core/src/main/java/hudson/slaves/NodeProvisioner.java @@ -800,9 +800,9 @@ public class NodeProvisioner { * Give some initial warm up time so that statically connected agents * can be brought online before we start allocating more. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static int INITIALDELAY = SystemProperties.getInteger(NodeProvisioner.class.getName()+".initialDelay",LoadStatistics.CLOCK*10); - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static int RECURRENCEPERIOD = SystemProperties.getInteger(NodeProvisioner.class.getName()+".recurrencePeriod",LoadStatistics.CLOCK); @Override diff --git a/core/src/main/java/hudson/tasks/BuildTrigger.java b/core/src/main/java/hudson/tasks/BuildTrigger.java index 17cd525ad8..512c3413c4 100644 --- a/core/src/main/java/hudson/tasks/BuildTrigger.java +++ b/core/src/main/java/hudson/tasks/BuildTrigger.java @@ -25,6 +25,7 @@ package hudson.tasks; import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Extension; import hudson.Launcher; import hudson.Util; @@ -295,6 +296,7 @@ public class BuildTrigger extends Recorder implements DependencyDeclarer { public void buildDependencyGraph(AbstractProject owner, DependencyGraph graph) { for (AbstractProject p : getChildProjects(owner)) // only care about AbstractProject here graph.addDependency(new Dependency(owner, p) { + @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "TODO needs triage") @Override public boolean shouldTriggerBuild(AbstractBuild build, TaskListener listener, List actions) { diff --git a/core/src/main/java/hudson/triggers/SCMTrigger.java b/core/src/main/java/hudson/triggers/SCMTrigger.java index 7c7a23ce20..8dc4b18179 100644 --- a/core/src/main/java/hudson/triggers/SCMTrigger.java +++ b/core/src/main/java/hudson/triggers/SCMTrigger.java @@ -768,6 +768,6 @@ public class SCMTrigger extends Trigger { /** * How long is too long for a polling activity to be in the queue? */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static long STARVATION_THRESHOLD = SystemProperties.getLong(SCMTrigger.class.getName()+".starvationThreshold", TimeUnit.HOURS.toMillis(1)); } diff --git a/core/src/main/java/hudson/triggers/SlowTriggerAdminMonitor.java b/core/src/main/java/hudson/triggers/SlowTriggerAdminMonitor.java index b821dda31e..bfba8a072b 100644 --- a/core/src/main/java/hudson/triggers/SlowTriggerAdminMonitor.java +++ b/core/src/main/java/hudson/triggers/SlowTriggerAdminMonitor.java @@ -28,7 +28,7 @@ public class SlowTriggerAdminMonitor extends AdministrativeMonitor { @NonNull private final Map errors = new ConcurrentHashMap<>(); - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ int MAX_ENTRIES = SystemProperties.getInteger(SlowTriggerAdminMonitor.class.getName() + ".maxEntries", 10); @NonNull diff --git a/core/src/main/java/hudson/triggers/Trigger.java b/core/src/main/java/hudson/triggers/Trigger.java index 5fea10010a..1c9225f233 100644 --- a/core/src/main/java/hudson/triggers/Trigger.java +++ b/core/src/main/java/hudson/triggers/Trigger.java @@ -258,6 +258,7 @@ public abstract class Trigger implements Describable> // terminated. // FIXME allow to set a global crontab spec previousSynchronousPolling = scmd.getExecutor().submit(new DependencyRunner(new ProjectRunnable() { + @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH", justification = "TODO needs triage") @Override public void run(AbstractProject p) { for (Trigger t : (Collection) p.getTriggers().values()) { @@ -313,7 +314,7 @@ public abstract class Trigger implements Describable> /** * Used to be milliseconds, now is seconds since Jenkins 2.289. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") @Restricted(NoExternalUse.class) @RestrictedSince("2.289") public static /* non-final for Groovy */ long CRON_THRESHOLD = SystemProperties.getLong(Trigger.class.getName() + ".CRON_THRESHOLD", 30L); // Default threshold 30s @@ -330,7 +331,7 @@ public abstract class Trigger implements Describable> * * @deprecated Use {@link jenkins.util.Timer#get()} instead. */ - @SuppressWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "TODO needs triage") @Deprecated public static @CheckForNull Timer timer; diff --git a/core/src/main/java/hudson/util/CompressedFile.java b/core/src/main/java/hudson/util/CompressedFile.java index 5904555cac..8b924d8cc4 100644 --- a/core/src/main/java/hudson/util/CompressedFile.java +++ b/core/src/main/java/hudson/util/CompressedFile.java @@ -25,6 +25,7 @@ package hudson.util; import com.jcraft.jzlib.GZIPInputStream; import com.jcraft.jzlib.GZIPOutputStream; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -144,6 +145,7 @@ public class CompressedFile { */ public void compress() { compressionThread.submit(new Runnable() { + @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", justification = "TODO needs triage") @Override public void run() { try { diff --git a/core/src/main/java/hudson/util/ProcessTree.java b/core/src/main/java/hudson/util/ProcessTree.java index 1b42f348d5..be6b229cce 100644 --- a/core/src/main/java/hudson/util/ProcessTree.java +++ b/core/src/main/java/hudson/util/ProcessTree.java @@ -36,6 +36,7 @@ import com.sun.jna.ptr.IntByReference; import com.sun.jna.ptr.NativeLongByReference; import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.EnvVars; import hudson.FilePath; import hudson.Util; @@ -1750,6 +1751,7 @@ public abstract class ProcessTree implements Iterable, IProcessTree, int argmax = argmaxRef.getValue(); + @SuppressFBWarnings(value = "EQ_DOESNT_OVERRIDE_EQUALS", justification = "TODO needs triage") class StringArrayMemory extends Memory { private long offset=0; private long length=0; @@ -1777,6 +1779,7 @@ public abstract class ProcessTree implements Iterable, IProcessTree, return getByte(offset); } + @SuppressFBWarnings(value = "DM_DEFAULT_ENCODING", justification = "TODO needs triage") String readString() { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte ch; diff --git a/core/src/main/java/hudson/util/Secret.java b/core/src/main/java/hudson/util/Secret.java index 6deee7b508..45385af68e 100644 --- a/core/src/main/java/hudson/util/Secret.java +++ b/core/src/main/java/hudson/util/Secret.java @@ -308,7 +308,7 @@ public final class Secret implements Serializable { public static final boolean AUTO_ENCRYPT_PASSWORD_CONTROL = SystemProperties.getBoolean(Secret.class.getName() + ".AUTO_ENCRYPT_PASSWORD_CONTROL", true); @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* non-final */ boolean BLANK_NONSECRET_PASSWORD_FIELDS_WITHOUT_ITEM_CONFIGURE = SystemProperties.getBoolean(Secret.class.getName() + ".BLANK_NONSECRET_PASSWORD_FIELDS_WITHOUT_ITEM_CONFIGURE", true); static { diff --git a/core/src/main/java/hudson/util/XStream2.java b/core/src/main/java/hudson/util/XStream2.java index 0802197390..db600cfe90 100644 --- a/core/src/main/java/hudson/util/XStream2.java +++ b/core/src/main/java/hudson/util/XStream2.java @@ -52,6 +52,7 @@ import com.thoughtworks.xstream.mapper.MapperWrapper; import com.thoughtworks.xstream.security.AnyTypePermission; import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.PluginManager; import hudson.PluginWrapper; import hudson.XmlFile; @@ -469,11 +470,13 @@ public class XStream2 extends XStream { return findConverter(type)!=null; } + @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "TODO needs triage") @Override public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { findConverter(source.getClass()).marshal(source,writer,context); } + @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "TODO needs triage") @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { return findConverter(context.getRequiredType()).unmarshal(reader,context); diff --git a/core/src/main/java/jenkins/SoloFilePathFilter.java b/core/src/main/java/jenkins/SoloFilePathFilter.java index 19a949bfde..48420c4cee 100644 --- a/core/src/main/java/jenkins/SoloFilePathFilter.java +++ b/core/src/main/java/jenkins/SoloFilePathFilter.java @@ -23,7 +23,7 @@ public final class SoloFilePathFilter extends FilePathFilter { private static final Logger LOGGER = Logger.getLogger(SoloFilePathFilter.class.getName()); - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") @Restricted(NoExternalUse.class) public static /* non-final for Groovy */ boolean REDACT_ERRORS = SystemProperties.getBoolean(SoloFilePathFilter.class.getName() + ".redactErrors", true); diff --git a/core/src/main/java/jenkins/formelementpath/FormElementPathPageDecorator.java b/core/src/main/java/jenkins/formelementpath/FormElementPathPageDecorator.java index b1c3b87d96..8a1df70781 100644 --- a/core/src/main/java/jenkins/formelementpath/FormElementPathPageDecorator.java +++ b/core/src/main/java/jenkins/formelementpath/FormElementPathPageDecorator.java @@ -8,7 +8,7 @@ import jenkins.util.SystemProperties; @Extension public class FormElementPathPageDecorator extends PageDecorator { - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") private static /*almost final */ boolean ENABLED = SystemProperties.getBoolean(FormElementPathPageDecorator.class.getName() + ".enabled"); diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java index 7231f6fad6..b265286525 100644 --- a/core/src/main/java/jenkins/model/Jenkins.java +++ b/core/src/main/java/jenkins/model/Jenkins.java @@ -674,7 +674,6 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve */ private String label=""; - //@SuppressFBWarnings("MS_SHOULD_BE_FINAL") private static /* non-final for Groovy */ String nodeNameAndSelfLabelOverride = SystemProperties.getString(Jenkins.class.getName() + ".nodeNameAndSelfLabelOverride"); /** @@ -890,6 +889,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve * If non-null, use existing plugin manager. create a new one. */ @SuppressFBWarnings({ + "DMI_RANDOM_USED_ONLY_ONCE", // TODO needs triage "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", // Trigger.timer "DM_EXIT" // Exit is wanted here }) @@ -3545,7 +3545,6 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve /** * Called to shut down the system. */ - @edu.umd.cs.findbugs.annotations.SuppressFBWarnings("ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD") public void cleanUp() { if (theInstance != this && theInstance != null) { LOGGER.log(Level.WARNING, "This instance is no longer the singleton, ignoring cleanUp()"); @@ -4364,8 +4363,8 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve /** * For debugging. Expose URL to perform GC. */ - @edu.umd.cs.findbugs.annotations.SuppressFBWarnings("DM_GC") @RequirePOST + @SuppressFBWarnings(value = "DM_GC", justification = "for debugging") public void doGc(StaplerResponse rsp) throws IOException { checkPermission(Jenkins.ADMINISTER); System.gc(); @@ -5439,9 +5438,9 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve */ public static String VIEW_RESOURCE_PATH = "/resources/TBD"; - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean PARALLEL_LOAD = SystemProperties.getBoolean(Jenkins.class.getName() + "." + "parallelLoad", true); - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean KILL_AFTER_LOAD = SystemProperties.getBoolean(Jenkins.class.getName() + "." + "killAfterLoad", false); /** * @deprecated No longer used. @@ -5512,7 +5511,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve /** * Automatically try to launch an agent when Jenkins is initialized or a new agent computer is created. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "TODO needs triage") public static boolean AUTOMATIC_SLAVE_LAUNCH = true; private static final Logger LOGGER = Logger.getLogger(Jenkins.class.getName()); diff --git a/core/src/main/java/jenkins/model/StandardArtifactManager.java b/core/src/main/java/jenkins/model/StandardArtifactManager.java index 24cb763a7a..195619f705 100644 --- a/core/src/main/java/jenkins/model/StandardArtifactManager.java +++ b/core/src/main/java/jenkins/model/StandardArtifactManager.java @@ -52,7 +52,7 @@ public class StandardArtifactManager extends ArtifactManager { @Restricted(NoExternalUse.class) @VisibleForTesting - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static FilePath.TarCompression TAR_COMPRESSION = SystemProperties.getBoolean(StandardArtifactManager.class.getName() + ".disableTrafficCompression") ? FilePath.TarCompression.NONE : FilePath.TarCompression.GZIP; diff --git a/core/src/main/java/jenkins/model/item_category/ItemCategory.java b/core/src/main/java/jenkins/model/item_category/ItemCategory.java index 6165005a6a..520c98090f 100644 --- a/core/src/main/java/jenkins/model/item_category/ItemCategory.java +++ b/core/src/main/java/jenkins/model/item_category/ItemCategory.java @@ -47,7 +47,7 @@ public abstract class ItemCategory implements ExtensionPoint { * See JENKINS-36593 for more info. */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "TODO needs triage") public static int MIN_TOSHOW = 1; /** diff --git a/core/src/main/java/jenkins/scm/RunWithSCM.java b/core/src/main/java/jenkins/scm/RunWithSCM.java index 0da5837ff3..7a3a3394fb 100644 --- a/core/src/main/java/jenkins/scm/RunWithSCM.java +++ b/core/src/main/java/jenkins/scm/RunWithSCM.java @@ -26,6 +26,7 @@ package jenkins.scm; import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.model.Job; import hudson.model.Result; import hudson.model.Run; @@ -48,6 +49,7 @@ import org.kohsuke.stapler.export.Exported; * * @since 2.60 */ +@SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "TODO needs triage") public interface RunWithSCM, RunT extends Run & RunWithSCM> { diff --git a/core/src/main/java/jenkins/security/BasicHeaderRealPasswordAuthenticator.java b/core/src/main/java/jenkins/security/BasicHeaderRealPasswordAuthenticator.java index c2ab0e2666..600606cde6 100644 --- a/core/src/main/java/jenkins/security/BasicHeaderRealPasswordAuthenticator.java +++ b/core/src/main/java/jenkins/security/BasicHeaderRealPasswordAuthenticator.java @@ -73,6 +73,6 @@ public class BasicHeaderRealPasswordAuthenticator extends BasicHeaderAuthenticat * Legacy property to disable the real password support. * Now that this is an extension, {@link ExtensionFilter} is a better way to control this. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean DISABLE = SystemProperties.getBoolean("jenkins.security.ignoreBasicAuth"); } diff --git a/core/src/main/java/jenkins/security/ResourceDomainRootAction.java b/core/src/main/java/jenkins/security/ResourceDomainRootAction.java index 70752dfa0a..de36469041 100644 --- a/core/src/main/java/jenkins/security/ResourceDomainRootAction.java +++ b/core/src/main/java/jenkins/security/ResourceDomainRootAction.java @@ -313,6 +313,6 @@ public class ResourceDomainRootAction implements UnprotectedRootAction { private static HMACConfidentialKey KEY = new HMACConfidentialKey(ResourceDomainRootAction.class, "key"); // Not @Restricted because the entire class is - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* not final for Groovy */ int VALID_FOR_MINUTES = SystemProperties.getInteger(ResourceDomainRootAction.class.getName() + ".validForMinutes", 30); } diff --git a/core/src/main/java/jenkins/security/apitoken/ApiTokenStore.java b/core/src/main/java/jenkins/security/apitoken/ApiTokenStore.java index 499856ad29..c898a5422a 100644 --- a/core/src/main/java/jenkins/security/apitoken/ApiTokenStore.java +++ b/core/src/main/java/jenkins/security/apitoken/ApiTokenStore.java @@ -26,7 +26,6 @@ package jenkins.security.apitoken; import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.Nullable; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Util; import hudson.util.Secret; import java.io.Serializable; @@ -86,7 +85,6 @@ public class ApiTokenStore { } } - @SuppressFBWarnings("NP_NONNULL_RETURN_VIOLATION") public synchronized @NonNull Collection getTokenListSortedByName() { return tokenList.stream() .sorted(SORT_BY_LOWERCASED_NAME) diff --git a/core/src/main/java/jenkins/security/s2m/CallableDirectionChecker.java b/core/src/main/java/jenkins/security/s2m/CallableDirectionChecker.java index 3c883dbd71..5f05307ed0 100644 --- a/core/src/main/java/jenkins/security/s2m/CallableDirectionChecker.java +++ b/core/src/main/java/jenkins/security/s2m/CallableDirectionChecker.java @@ -41,7 +41,7 @@ public class CallableDirectionChecker extends RoleChecker { * This is an escape hatch in case the fix breaks something critical, to allow the user * to keep operation. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean BYPASS = SystemProperties.getBoolean(BYPASS_PROP); private CallableDirectionChecker(Object context) { diff --git a/core/src/main/java/jenkins/security/s2m/DefaultFilePathFilter.java b/core/src/main/java/jenkins/security/s2m/DefaultFilePathFilter.java index c591827ec8..a9ab17d263 100644 --- a/core/src/main/java/jenkins/security/s2m/DefaultFilePathFilter.java +++ b/core/src/main/java/jenkins/security/s2m/DefaultFilePathFilter.java @@ -50,7 +50,7 @@ import org.kohsuke.accmod.restrictions.NoExternalUse; /** * Escape hatch to disable this check completely. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static boolean BYPASS = SystemProperties.getBoolean(DefaultFilePathFilter.class.getName()+".allow"); private static final Logger LOGGER = Logger.getLogger(DefaultFilePathFilter.class.getName()); diff --git a/core/src/main/java/jenkins/security/seed/UserSeedProperty.java b/core/src/main/java/jenkins/security/seed/UserSeedProperty.java index 81fc67f07a..517daa6c3e 100644 --- a/core/src/main/java/jenkins/security/seed/UserSeedProperty.java +++ b/core/src/main/java/jenkins/security/seed/UserSeedProperty.java @@ -64,14 +64,14 @@ public class UserSeedProperty extends UserProperty { * If we disable the seed, we can still use it to write / store information but not verifying the data using it. */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean DISABLE_USER_SEED = SystemProperties.getBoolean(UserSeedProperty.class.getName() + ".disableUserSeed"); /** * Hide the user seed section from the UI to prevent accidental use */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean HIDE_USER_SEED_SECTION = SystemProperties.getBoolean(UserSeedProperty.class.getName() + ".hideUserSeedSection"); public static final String USER_SESSION_SEED = "_JENKINS_SESSION_SEED"; diff --git a/core/src/main/java/jenkins/security/stapler/StaplerDispatchValidator.java b/core/src/main/java/jenkins/security/stapler/StaplerDispatchValidator.java index fbef121546..8e57e8d626 100644 --- a/core/src/main/java/jenkins/security/stapler/StaplerDispatchValidator.java +++ b/core/src/main/java/jenkins/security/stapler/StaplerDispatchValidator.java @@ -90,7 +90,7 @@ public class StaplerDispatchValidator implements DispatchValidator { /** * Escape hatch to disable dispatch validation. */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* script-console editable */ boolean DISABLED = SystemProperties.getBoolean(ESCAPE_HATCH); private static @CheckForNull Boolean setStatus(@NonNull StaplerRequest req, @CheckForNull Boolean status) { diff --git a/core/src/main/java/jenkins/security/stapler/StaticRoutingDecisionProvider.java b/core/src/main/java/jenkins/security/stapler/StaticRoutingDecisionProvider.java index 889456f3c6..ad0a8eb3cb 100644 --- a/core/src/main/java/jenkins/security/stapler/StaticRoutingDecisionProvider.java +++ b/core/src/main/java/jenkins/security/stapler/StaticRoutingDecisionProvider.java @@ -263,7 +263,7 @@ public class StaticRoutingDecisionProvider extends RoutingDecisionProvider imple } /** Allow script console access */ - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static String WHITELIST_PATH = SystemProperties.getString(StaticRoutingDecisionProvider.class.getName() + ".whitelist"); } diff --git a/core/src/main/java/jenkins/security/stapler/TypedFilter.java b/core/src/main/java/jenkins/security/stapler/TypedFilter.java index 763a91452b..f75949c152 100644 --- a/core/src/main/java/jenkins/security/stapler/TypedFilter.java +++ b/core/src/main/java/jenkins/security/stapler/TypedFilter.java @@ -269,10 +269,10 @@ public class TypedFilter implements FieldRef.Filter, FunctionList.Filter { } @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean SKIP_TYPE_CHECK = SystemProperties.getBoolean(TypedFilter.class.getName() + ".skipTypeCheck"); @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean PROHIBIT_STATIC_ACCESS = SystemProperties.getBoolean(TypedFilter.class.getName() + ".prohibitStaticAccess", true); } diff --git a/core/src/main/java/jenkins/slaves/EncryptedSlaveAgentJnlpFile.java b/core/src/main/java/jenkins/slaves/EncryptedSlaveAgentJnlpFile.java index 9c394ee21a..f4c4e71387 100644 --- a/core/src/main/java/jenkins/slaves/EncryptedSlaveAgentJnlpFile.java +++ b/core/src/main/java/jenkins/slaves/EncryptedSlaveAgentJnlpFile.java @@ -1,5 +1,6 @@ package jenkins.slaves; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.Util; import hudson.security.AccessControlled; import hudson.security.Permission; @@ -68,6 +69,7 @@ public class EncryptedSlaveAgentJnlpFile implements HttpResponse { this.slaveName = slaveName; } + @SuppressFBWarnings(value = "DMI_RANDOM_USED_ONLY_ONCE", justification = "TODO needs triage") @Override public void generateResponse(StaplerRequest req, final StaplerResponse res, Object node) throws IOException, ServletException { RequestDispatcher view = req.getView(it, viewName); diff --git a/core/src/main/java/jenkins/util/FullDuplexHttpService.java b/core/src/main/java/jenkins/util/FullDuplexHttpService.java index d8c02e002f..4eb606d94a 100644 --- a/core/src/main/java/jenkins/util/FullDuplexHttpService.java +++ b/core/src/main/java/jenkins/util/FullDuplexHttpService.java @@ -59,14 +59,14 @@ public abstract class FullDuplexHttpService { * Set to true if the servlet container doesn't support chunked encoding. */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ boolean DIY_CHUNKING = SystemProperties.getBoolean("hudson.diyChunking"); /** * Controls the time out of waiting for the 2nd HTTP request to arrive. */ @Restricted(NoExternalUse.class) - @SuppressFBWarnings("MS_SHOULD_BE_FINAL") + @SuppressFBWarnings(value = "MS_SHOULD_BE_FINAL", justification = "for script console") public static /* Script Console modifiable */ long CONNECTION_TIMEOUT = TimeUnit.SECONDS.toMillis(15); protected final UUID uuid; diff --git a/src/spotbugs/spotbugs-excludes.xml b/src/spotbugs/spotbugs-excludes.xml index a44e5e4ad9..11df143247 100644 --- a/src/spotbugs/spotbugs-excludes.xml +++ b/src/spotbugs/spotbugs-excludes.xml @@ -1,33 +1,829 @@ + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +