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 extends Action> 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 extends Action> 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 @@
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+