Skip to content

Commit 0bd805c

Browse files
- Adding engine check
1 parent 6fdd4cd commit 0bd805c

2 files changed

Lines changed: 35 additions & 9 deletions

File tree

src/main/java/com/checkmarx/ast/wrapper/CxWrapper.java

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,17 @@
3131

3232
import java.io.IOException;
3333
import java.nio.file.Files;
34-
import java.util.ArrayList;
35-
import java.util.List;
36-
import java.util.Map;
37-
import java.util.UUID;
34+
import java.util.*;
35+
36+
import static com.checkmarx.ast.wrapper.Execution.*;
3837

3938
public class CxWrapper {
4039

4140
private static final CollectionType BRANCHES_TYPE = TypeFactory.defaultInstance()
4241
.constructCollectionType(List.class, String.class);
42+
private static final String OS_LINUX = "linux";
43+
private static final String OS_WINDOWS = "windows";
44+
private static final String OS_MAC = "mac";
4345

4446
@NonNull
4547
private final CxConfig cxConfig;
@@ -409,6 +411,30 @@ public KicsRealtimeResults kicsRealtimeScan(@NonNull String fileSources, String
409411
return Execution.executeCommand(withConfigArguments(arguments), logger, KicsRealtimeResults::fromLine);
410412
}
411413

414+
public String checkEngineExist(@NonNull String engineName) throws CxException, IOException, InterruptedException {
415+
String osName = System.getProperty("os.name").toLowerCase(Locale.ENGLISH);
416+
String osType=Execution.getOperatingSystemType(osName);
417+
return this.checkEngine(engineName,osType);
418+
}
419+
420+
private String checkEngine(String engineName, String osType ) throws CxException, IOException, InterruptedException {
421+
List<String> arguments = new ArrayList<>();
422+
switch (osType){
423+
case OS_LINUX:
424+
case OS_MAC:
425+
arguments.add("/bin/sh");
426+
arguments.add("-c");
427+
arguments.add("which " + engineName);
428+
break;
429+
case OS_WINDOWS:
430+
arguments.add(engineName);
431+
arguments.add("--version");
432+
break;
433+
434+
}
435+
return Execution.executeCommand((arguments), logger, line->line);
436+
}
437+
412438
public <T> T realtimeScan(@NonNull String subCommand, @NonNull String sourcePath, String containerTool, String ignoredFilePath, java.util.function.Function<String, T> resultParser)
413439
throws IOException, InterruptedException, CxException {
414440
this.logger.info("Executing 'scan {}' command using the CLI.", subCommand);

src/main/java/com/checkmarx/ast/wrapper/Execution.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.checkmarx.ast.wrapper;
22

3+
import com.checkmarx.ast.kicsRealtimeResults.KicsRealtimeResults;
34
import lombok.NonNull;
45
import org.slf4j.Logger;
56

@@ -12,10 +13,7 @@
1213
import java.nio.file.Paths;
1314
import java.security.MessageDigest;
1415
import java.security.NoSuchAlgorithmException;
15-
import java.util.Arrays;
16-
import java.util.List;
17-
import java.util.Locale;
18-
import java.util.Objects;
16+
import java.util.*;
1917
import java.util.function.BiFunction;
2018
import java.util.function.Function;
2119

@@ -171,7 +169,7 @@ private static String detectBinaryName(@NonNull Logger logger) {
171169
return fileName;
172170
}
173171

174-
private static String getOperatingSystemType(String osName) {
172+
public static String getOperatingSystemType(String osName) {
175173
if (osName.contains(OS_LINUX)) {
176174
return OS_LINUX;
177175
} else if (osName.contains(OS_WINDOWS)) {
@@ -217,4 +215,6 @@ private static String md5(InputStream a) {
217215
}
218216
return md5;
219217
}
218+
219+
220220
}

0 commit comments

Comments
 (0)