Skip to content

Commit

Permalink
Fix getScanIdFromLogFile using wrong search pattern to get Scan ID (#224
Browse files Browse the repository at this point in the history
)

* fix getScanIdFromLogFile

* adding a better regex

* adding a better regex
  • Loading branch information
igorlombacx authored Sep 29, 2023
1 parent 75262af commit 00838ca
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 15 deletions.
26 changes: 13 additions & 13 deletions src/main/java/com/checkmarx/jenkins/CheckmarxScanBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ public void perform(@NonNull Run<?, ?> run, @NonNull FilePath workspace, EnvVars
return;
}

PluginUtils.insertSecretsAsEnvVars(scanConfig, envVars );
PluginUtils.insertSecretsAsEnvVars(scanConfig, envVars);

printConfiguration(envVars, descriptor, log);

Expand Down Expand Up @@ -294,15 +294,15 @@ public void close() throws IOException {
}
}).join();

if(exitCode != 0) {
if (exitCode != 0) {
log.error(String.format("Exit code from AST-CLI: %s", exitCode));
log.info("Generating failed report");
run.setResult(Result.FAILURE);
}
} catch (InterruptedException interruptedException) {
String logFile = fos.toString(String.valueOf(StandardCharsets.UTF_8));
String scanId = PluginUtils.getScanIdFromLogFile(logFile);
if(!scanId.isEmpty()) {
if (!scanId.isEmpty()) {
log.info("Cancelling scan with id: {}", scanId);
launcher.launch().cmds(PluginUtils.scanCancel(UUID.fromString(scanId), scanConfig, checkmarxCliExecutable, this.log)).envs(envVars).stdout(listener.getLogger()).join();
log.info("Successfully canceled scan with id: {}", scanId);
Expand All @@ -315,7 +315,7 @@ public void close() throws IOException {
String logFile = fos.toString(String.valueOf(StandardCharsets.UTF_8));
String scanId = PluginUtils.getScanIdFromLogFile(logFile);

if(scanId.isEmpty()) {
if (scanId.isEmpty()) {
log.error("Scan ID is empty");
return;
}
Expand All @@ -324,7 +324,7 @@ public void close() throws IOException {
ArgumentListBuilder jsonArguments = new ArgumentListBuilder();

try {
final List<String> htmlReportCommand = PluginUtils.generateHTMLReport(UUID.fromString(scanId), scanConfig, checkmarxCliExecutable, log);
final List<String> htmlReportCommand = PluginUtils.generateHTMLReport(UUID.fromString(scanId), scanConfig, checkmarxCliExecutable, log);
htmlArguments.add(htmlReportCommand);
//Adding temp directory path name to command arguments
htmlArguments.add("--output-path");
Expand All @@ -335,7 +335,7 @@ public void close() throws IOException {

launcher.launch().cmds(htmlArguments).envs(envVars).stdout(listener.getLogger()).join();

final List<String> jsonReportCommand = PluginUtils.generateJsonReport(UUID.fromString(scanId), scanConfig, checkmarxCliExecutable, log);
final List<String> jsonReportCommand = PluginUtils.generateJsonReport(UUID.fromString(scanId), scanConfig, checkmarxCliExecutable, log);
jsonArguments.add(jsonReportCommand);
//Adding temp directory path name to command arguments
jsonArguments.add("--output-path");
Expand Down Expand Up @@ -390,12 +390,12 @@ private String getBranchNameOrDefault(EnvVars envVars) {
* @param envVars
* @return
*/
private String getBranchToPrint(EnvVars envVars){
private String getBranchToPrint(EnvVars envVars) {

if(StringUtils.isNotEmpty(getBranchName())) return getBranchName();
if(StringUtils.isNotEmpty(envVars.get(GIT_BRANCH))) return GIT_BRANCH_VAR;
if(StringUtils.isNotEmpty(envVars.get(CVS_BRANCH))) return CVS_BRANCH_VAR;
if(StringUtils.isNotEmpty(envVars.get(SVN_REVISION))) return SVN_REVISION_VAR;
if (StringUtils.isNotEmpty(getBranchName())) return getBranchName();
if (StringUtils.isNotEmpty(envVars.get(GIT_BRANCH))) return GIT_BRANCH_VAR;
if (StringUtils.isNotEmpty(envVars.get(CVS_BRANCH))) return CVS_BRANCH_VAR;
if (StringUtils.isNotEmpty(envVars.get(SVN_REVISION))) return SVN_REVISION_VAR;

return "";
}
Expand Down Expand Up @@ -473,7 +473,6 @@ private ScanConfig resolveConfiguration(Run<?, ?> run, FilePath workspace, Check

/**
* Check if all mandatory fields are filled in
*
*/
private void checkMandatoryFields(CheckmarxScanBuilderDescriptor descriptor) throws CheckmarxException {
if (fixEmptyAndTrim(getProjectName()) == null)
Expand Down Expand Up @@ -660,7 +659,8 @@ public FormValidation doTestConnection(@QueryParameter final String serverUrl,
}

private String getCheckmarxInstallationPath(String checkmarxInstallation) throws CheckmarxException, IOException, InterruptedException {
if (StringUtils.isEmpty(checkmarxInstallation)) throw new CheckmarxException("Checkmarx installation not provided");
if (StringUtils.isEmpty(checkmarxInstallation))
throw new CheckmarxException("Checkmarx installation not provided");

TaskListener taskListener = () -> System.out;
Launcher launcher = Jenkins.get().createLauncher(taskListener);
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/checkmarx/jenkins/PluginUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class PluginUtils {
public static final String CHECKMARX_AST_RESULTS = "checkmarx-ast-results";
public static final String CHECKMARX_AST_RESULTS_HTML = "checkmarx-ast-results.html";
public static final String CHECKMARX_AST_RESULTS_JSON = "checkmarx-ast-results.json";
public static final String REGEX_SCAN_ID_FROM_LOGS = "(ID)\":\"((\\\\\"|[^\"])*)";
public static final String REGEX_SCAN_ID_FROM_LOGS = "\"ID\":\"([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})\"";
private static final String JENKINS = "Jenkins";
static final String CX_CLIENT_ID_ENV_KEY = "CX_CLIENT_ID";
static final String CX_CLIENT_SECRET_ENV_KEY = "CX_CLIENT_SECRET";
Expand Down Expand Up @@ -94,7 +94,7 @@ public static String getScanIdFromLogFile(String logs) {
final Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(logs);
if (matcher.find()) {
return matcher.group(2);
return matcher.group(1);
}
return "";
}
Expand Down

0 comments on commit 00838ca

Please sign in to comment.