diff --git a/pom.xml b/pom.xml index 8899db6a..25df450b 100644 --- a/pom.xml +++ b/pom.xml @@ -15,25 +15,18 @@ https://www.apache.org/licenses/LICENSE-2.0 - - - - mattmurp - Matt Murphy - matthew.murphy@hcl.com - - org.jenkins-ci.plugins plugin - 4.52 + 4.88 1.7.26 - 2.426 + + 2.462 ${jenkins.baseline}.3 false false @@ -49,7 +42,7 @@ io.jenkins.tools.bom bom-${jenkins.baseline}.x - 2718.v7e8a_d43b_3f0b_ + 4228.v0a_71308d905b_ pom import @@ -107,7 +100,7 @@ - scm:git:ssh://github.com/jenkinsci/appscan-plugin.git + scm:git:https://github.com/jenkinsci/appscan-plugin.git scm:git:ssh://git@github.com/jenkinsci/appscan-plugin.git https://github.com/jenkinsci/appscan-plugin HEAD diff --git a/src/main/java/com/hcl/appscan/jenkins/plugin/builders/AppScanBuildStep.java b/src/main/java/com/hcl/appscan/jenkins/plugin/builders/AppScanBuildStep.java index 5257655e..31d47de8 100644 --- a/src/main/java/com/hcl/appscan/jenkins/plugin/builders/AppScanBuildStep.java +++ b/src/main/java/com/hcl/appscan/jenkins/plugin/builders/AppScanBuildStep.java @@ -285,23 +285,24 @@ private void shouldFailBuild(IResultsProvider provider,Run build, IProgress if(!m_failBuild && !m_failBuildNonCompliance) return ; String failureMessage=Messages.error_threshold_exceeded(); - try { - List failureConditions=m_failureConditions; - progress.setStatus(new Message(Message.INFO, Messages.fail_build_check())); - if (m_failBuildNonCompliance){ - failureConditions =new ArrayList<>(); - FailureCondition nonCompliantCondition = new FailureCondition("total", 0); - failureConditions.add(nonCompliantCondition); - failureMessage=Messages.error_noncompliant_issues(); - } - if(new ResultsInspector(failureConditions, provider).shouldFail()){ - build.setDescription(failureMessage); - throw new AbortException(failureMessage); - } - - } catch(NullPointerException e) { - throw new AbortException(Messages.error_checking_results(provider.getStatus())); - } + + if (provider == null) { + throw new AbortException(Messages.error_checking_results("Provider is null")); + } + + List failureConditions=m_failureConditions; + progress.setStatus(new Message(Message.INFO, Messages.fail_build_check())); + if (m_failBuildNonCompliance){ + failureConditions =new ArrayList<>(); + FailureCondition nonCompliantCondition = new FailureCondition("total", 0); + failureConditions.add(nonCompliantCondition); + failureMessage=Messages.error_noncompliant_issues(); + } + + if (failureConditions != null && new ResultsInspector(failureConditions, provider).shouldFail()){ + build.setDescription(failureMessage); + throw new AbortException(failureMessage); + } } private void perform(Run build, Launcher launcher, TaskListener listener) throws InterruptedException, IOException { @@ -322,7 +323,12 @@ private void perform(Run build, Launcher launcher, TaskListener listener) t final IScan scan = ScanFactory.createScan(properties, progress, m_authProvider); - IResultsProvider provider = launcher.getChannel().call(new Callable() { + final hudson.remoting.VirtualChannel channel = launcher.getChannel(); + if (channel == null) { + throw new AbortException("Jenkins launcher channel is not available. Cannot execute scan remotely."); + } + + IResultsProvider provider = channel.call(new Callable() { private static final long serialVersionUID = 1L; @Override diff --git a/src/main/java/com/hcl/appscan/jenkins/plugin/builders/AppScanEnterpriseBuildStep.java b/src/main/java/com/hcl/appscan/jenkins/plugin/builders/AppScanEnterpriseBuildStep.java index 4ae56eb5..c54c42d3 100644 --- a/src/main/java/com/hcl/appscan/jenkins/plugin/builders/AppScanEnterpriseBuildStep.java +++ b/src/main/java/com/hcl/appscan/jenkins/plugin/builders/AppScanEnterpriseBuildStep.java @@ -441,14 +441,15 @@ private void shouldFailBuild(IResultsProvider provider, Run build) throws if (!m_failBuild) return; String failureMessage = Messages.error_threshold_exceeded(); - try { - List failureConditions = m_failureConditions; - if (new ResultsInspector(failureConditions, provider).shouldFail()) { - build.setDescription(failureMessage); - throw new AbortException(failureMessage); - } - } catch (NullPointerException e) { - throw new AbortException(Messages.error_checking_results(provider.getStatus())); + + if (provider == null) { + throw new AbortException(Messages.error_checking_results("Provider is null")); + } + + List failureConditions = m_failureConditions; + if (failureConditions != null && new ResultsInspector(failureConditions, provider).shouldFail()) { + build.setDescription(failureMessage); + throw new AbortException(failureMessage); } } @@ -458,7 +459,7 @@ private boolean checkURLAccessibility(String URL) throws IOException { HttpURLConnection conn = (HttpURLConnection) url.openConnection(); int responseCode = conn.getResponseCode(); return responseCode >= HttpURLConnection.HTTP_OK && responseCode < HttpURLConnection.HTTP_MULT_CHOICE; - } catch (Exception e){ + } catch (IOException e){ throw new AbortException(Messages.error_url_validation(m_target)); } } @@ -498,7 +499,12 @@ private void performScan(Run build, Launcher launcher, TaskListener listen } final IScan scan = ScanFactory.createScan(properties, progress, m_authProvider); // Call ASEScanFactory directly - IResultsProvider provider = launcher.getChannel().call(new Callable() { + final hudson.remoting.VirtualChannel channel = launcher.getChannel(); + if (channel == null) { + throw new AbortException("Jenkins launcher channel is not available. Cannot execute scan remotely."); + } + + IResultsProvider provider = channel.call(new Callable() { private static final long serialVersionUID = 1L; @Override diff --git a/src/main/java/com/hcl/appscan/jenkins/plugin/util/JenkinsUtil.java b/src/main/java/com/hcl/appscan/jenkins/plugin/util/JenkinsUtil.java index c2f9b800..bd74bda9 100644 --- a/src/main/java/com/hcl/appscan/jenkins/plugin/util/JenkinsUtil.java +++ b/src/main/java/com/hcl/appscan/jenkins/plugin/util/JenkinsUtil.java @@ -20,10 +20,11 @@ public static String getClientTypeUpdated() { } public static String getPluginVersion() { - if(Jenkins.getInstanceOrNull() != null) { - Plugin tempPlugin = Jenkins.getInstanceOrNull().getPlugin("appscan"); - - if(tempPlugin != null) { + Jenkins jenkins = Jenkins.getInstanceOrNull(); + if(jenkins != null) { + Plugin tempPlugin = jenkins.getPlugin("appscan"); + + if(tempPlugin != null && tempPlugin.getWrapper() != null) { return tempPlugin.getWrapper().getVersion(); } } diff --git a/src/main/java/com/ibm/appscan/jenkins/plugin/actions/ScanResults.java b/src/main/java/com/ibm/appscan/jenkins/plugin/actions/ScanResults.java index 6a1467a2..e2d5e0e2 100644 --- a/src/main/java/com/ibm/appscan/jenkins/plugin/actions/ScanResults.java +++ b/src/main/java/com/ibm/appscan/jenkins/plugin/actions/ScanResults.java @@ -9,10 +9,11 @@ import hudson.model.Run; +@edu.umd.cs.findbugs.annotations.SuppressFBWarnings("NM_SAME_SIMPLE_NAME_AS_SUPERCLASS") public class ScanResults extends com.hcl.appscan.jenkins.plugin.actions.ScanResults { public ScanResults(Run build, IResultsProvider provider, String name, String status, int totalFindings, int criticalCount, int highCount, int mediumCount, int lowCount, int infoCount) { super(build, provider, name, status, totalFindings, criticalCount, highCount, mediumCount, lowCount, infoCount, null, null); - } + } } \ No newline at end of file diff --git a/src/main/java/com/ibm/appscan/jenkins/plugin/auth/ASoCCredentials.java b/src/main/java/com/ibm/appscan/jenkins/plugin/auth/ASoCCredentials.java index e2280c7c..8dd911a5 100644 --- a/src/main/java/com/ibm/appscan/jenkins/plugin/auth/ASoCCredentials.java +++ b/src/main/java/com/ibm/appscan/jenkins/plugin/auth/ASoCCredentials.java @@ -8,6 +8,7 @@ import com.cloudbees.plugins.credentials.CredentialsScope; // Added for backward compatibility during HCL wash +@edu.umd.cs.findbugs.annotations.SuppressFBWarnings("NM_SAME_SIMPLE_NAME_AS_SUPERCLASS") public class ASoCCredentials extends com.hcl.appscan.jenkins.plugin.auth.ASoCCredentials { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/ibm/appscan/jenkins/plugin/auth/JenkinsAuthenticationProvider.java b/src/main/java/com/ibm/appscan/jenkins/plugin/auth/JenkinsAuthenticationProvider.java index a6381668..ff00ab73 100644 --- a/src/main/java/com/ibm/appscan/jenkins/plugin/auth/JenkinsAuthenticationProvider.java +++ b/src/main/java/com/ibm/appscan/jenkins/plugin/auth/JenkinsAuthenticationProvider.java @@ -7,6 +7,7 @@ import hudson.model.ItemGroup; +@edu.umd.cs.findbugs.annotations.SuppressFBWarnings("NM_SAME_SIMPLE_NAME_AS_SUPERCLASS") public class JenkinsAuthenticationProvider extends com.hcl.appscan.jenkins.plugin.auth.JenkinsAuthenticationProvider { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/ibm/appscan/jenkins/plugin/results/FailureCondition.java b/src/main/java/com/ibm/appscan/jenkins/plugin/results/FailureCondition.java index ee0bfd44..ecd6212a 100644 --- a/src/main/java/com/ibm/appscan/jenkins/plugin/results/FailureCondition.java +++ b/src/main/java/com/ibm/appscan/jenkins/plugin/results/FailureCondition.java @@ -6,6 +6,7 @@ package com.ibm.appscan.jenkins.plugin.results; //Added for backward compatibility during HCL wash +@edu.umd.cs.findbugs.annotations.SuppressFBWarnings("NM_SAME_SIMPLE_NAME_AS_SUPERCLASS") public class FailureCondition extends com.hcl.appscan.jenkins.plugin.results.FailureCondition { private static final long serialVersionUID = 1L;