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;