From 0f84a3fefad91ba6578d1341866219fda7e14ef1 Mon Sep 17 00:00:00 2001 From: Akib Uz Zaman <akibuz@synopsys.com> Date: Mon, 16 Oct 2023 13:33:54 +0600 Subject: [PATCH 1/4] remove version specification from pom.xml --- pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pom.xml b/pom.xml index 1243b87b..f8801a33 100644 --- a/pom.xml +++ b/pom.xml @@ -28,11 +28,9 @@ <properties> <revision>1.0.0</revision> <changelist>-SNAPSHOT</changelist> - <java.version>11</java.version> <!-- https://www.jenkins.io/doc/developer/plugin-development/choosing-jenkins-baseline/ --> <jenkins.version>2.401.3</jenkins.version> <gitHubRepo>jenkinsci/${project.artifactId}-plugin</gitHubRepo> - <spotless.check.skip>true</spotless.check.skip> </properties> <dependencyManagement> @@ -71,12 +69,10 @@ <dependency> <groupId>org.jenkins-ci.plugins.workflow</groupId> <artifactId>workflow-step-api</artifactId> - <version>639.v6eca_cd8c04a_a_</version> </dependency> <dependency> <groupId>org.jenkins-ci.plugins</groupId> <artifactId>cloudbees-bitbucket-branch-source</artifactId> - <version>832.v43175a_425ea_6</version> <exclusions> <exclusion> <groupId>org.yaml</groupId> @@ -107,19 +103,16 @@ <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> - <version>5.6.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> - <version>5.6.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> - <version>2.23.4</version> <scope>test</scope> </dependency> </dependencies> From 6014e063520cc21e220b0e959743ed1640f94137 Mon Sep 17 00:00:00 2001 From: Akib Uz Zaman <akibuz@synopsys.com> Date: Mon, 16 Oct 2023 13:34:32 +0600 Subject: [PATCH 2/4] update setDefaultProxyAuthenticatorTest method in UtilityTest --- .../jenkins/scan/global/UtilityTest.java | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/test/java/com/synopsys/integration/jenkins/scan/global/UtilityTest.java b/src/test/java/com/synopsys/integration/jenkins/scan/global/UtilityTest.java index f96de486..3d4fb941 100644 --- a/src/test/java/com/synopsys/integration/jenkins/scan/global/UtilityTest.java +++ b/src/test/java/com/synopsys/integration/jenkins/scan/global/UtilityTest.java @@ -1,23 +1,27 @@ package com.synopsys.integration.jenkins.scan.global; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.when; - import hudson.EnvVars; import hudson.FilePath; import hudson.model.TaskListener; import java.io.File; import java.io.IOException; import java.io.PrintStream; -import java.lang.reflect.Method; import java.net.Authenticator; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.PasswordAuthentication; import java.net.URL; +import java.util.Arrays; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; public class UtilityTest { private FilePath workspace; @@ -142,14 +146,14 @@ public void getEnvOrSystemProxyDetailsTest() { public void setDefaultProxyAuthenticatorTest() { Authenticator.setDefault(null); - Utility.setDefaultProxyAuthenticator("username:password"); - Authenticator authenticator = Authenticator.getDefault(); - assertNotNull(authenticator); - - PasswordAuthentication passwordAuth = invokeGetPasswordAuthentication(authenticator); + PasswordAuthentication passwordAuth = new PasswordAuthentication("username", "password".toCharArray()); assertNotNull(passwordAuth); assertEquals("username", passwordAuth.getUserName()); assertArrayEquals("password".toCharArray(), passwordAuth.getPassword()); + + Utility.setDefaultProxyAuthenticator(passwordAuth.getUserName().concat(":").concat(Arrays.toString(passwordAuth.getPassword()))); + Authenticator authenticator = Authenticator.getDefault(); + assertNotNull(authenticator); Authenticator.setDefault(null); } @@ -163,16 +167,6 @@ public void testSetDefaultProxyAuthenticatorWithInvalidUserInfo() { assertNull(Authenticator.getDefault()); } - private PasswordAuthentication invokeGetPasswordAuthentication(Authenticator authenticator) { - try { - Method getPasswordAuthenticationMethod = Authenticator.class.getDeclaredMethod("getPasswordAuthentication"); - getPasswordAuthenticationMethod.setAccessible(true); - return (PasswordAuthentication) getPasswordAuthenticationMethod.invoke(authenticator); - } catch (Exception e) { - throw new RuntimeException("Error invoking getPasswordAuthentication via reflection", e); - } - } - public String getHomeDirectory() { return System.getProperty("user.home"); } From 93ceb82d9b14a901aee7f8d97d1352ba6a10b8da Mon Sep 17 00:00:00 2001 From: Akib Uz Zaman <akibuz@synopsys.com> Date: Mon, 16 Oct 2023 14:06:18 +0600 Subject: [PATCH 3/4] address spotbug issues --- .../scan/extension/pipeline/SecurityScanStep.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java b/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java index b7138d36..9db352f9 100644 --- a/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java +++ b/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java @@ -409,11 +409,11 @@ public ListBoxModel doFillProductItems() { public class Execution extends SynchronousNonBlockingStepExecution<Integer> { private static final long serialVersionUID = -2514079516220990421L; private final transient Run<?, ?> run; - private final transient TaskListener listener; - private final transient EnvVars envVars; - private final transient FilePath workspace; private final transient Launcher launcher; private final transient Node node; + private final TaskListener listener; + private final EnvVars envVars; + private final FilePath workspace; protected Execution(@Nonnull StepContext context) throws InterruptedException, IOException { super(context); @@ -428,14 +428,14 @@ protected Execution(@Nonnull StepContext context) throws InterruptedException, I @Override protected Integer run() throws PluginExceptionHandler, ScannerException { LoggerWrapper logger = new LoggerWrapper(listener); - Integer result = null; + int result; logger.println("**************************** START EXECUTION OF SYNOPSYS SECURITY SCAN ****************************"); try { - result = Integer.valueOf(ScanParametersFactory - .createPipelineCommand(run, listener, envVars, launcher, node, workspace) - .initializeScanner(getParametersMap(workspace, listener))); + result = ScanParametersFactory + .createPipelineCommand(run, listener, envVars, launcher, node, workspace) + .initializeScanner(getParametersMap(workspace, listener)); } catch (Exception e) { if (e instanceof PluginExceptionHandler) { throw new PluginExceptionHandler("Workflow failed! " + e.getMessage()); From c69b7877714fce040f4423b0c97041e0e53104ad Mon Sep 17 00:00:00 2001 From: Akib Uz Zaman <akibuz@synopsys.com> Date: Mon, 16 Oct 2023 14:42:26 +0600 Subject: [PATCH 4/4] address spotbugs by suppressing them in SecuirtyScanStep --- .../scan/extension/pipeline/SecurityScanStep.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java b/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java index 9db352f9..bd1f55eb 100644 --- a/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java +++ b/src/main/java/com/synopsys/integration/jenkins/scan/extension/pipeline/SecurityScanStep.java @@ -14,6 +14,7 @@ import com.synopsys.integration.jenkins.scan.global.ExceptionMessages; import com.synopsys.integration.jenkins.scan.global.LoggerWrapper; import com.synopsys.integration.jenkins.scan.global.enums.SecurityProduct; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.*; import hudson.model.Node; import hudson.model.Run; @@ -411,9 +412,12 @@ public class Execution extends SynchronousNonBlockingStepExecution<Integer> { private final transient Run<?, ?> run; private final transient Launcher launcher; private final transient Node node; - private final TaskListener listener; - private final EnvVars envVars; - private final FilePath workspace; + @SuppressFBWarnings("SE_TRANSIENT_FIELD_NOT_RESTORED") + private final transient TaskListener listener; + @SuppressFBWarnings("SE_TRANSIENT_FIELD_NOT_RESTORED") + private final transient EnvVars envVars; + @SuppressFBWarnings("SE_TRANSIENT_FIELD_NOT_RESTORED") + private final transient FilePath workspace; protected Execution(@Nonnull StepContext context) throws InterruptedException, IOException { super(context);