Skip to content

Commit 6a84482

Browse files
committed
Merge branch 'main' into feature/AST-12643-sca-panel
2 parents 86f1e7c + 0c7f4ac commit 6a84482

File tree

18 files changed

+155
-30
lines changed

18 files changed

+155
-30
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
${{ runner.os }}-maven-
2121
2222
- name: Set up JDK 11
23-
uses: actions/[email protected].0
23+
uses: actions/[email protected].1
2424
with:
2525
distribution: 'temurin'
2626
java-version: '11'

.github/workflows/dependabot-auto-merge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
steps:
1212
- name: Dependabot metadata
1313
id: metadata
14-
uses: dependabot/[email protected].1
14+
uses: dependabot/[email protected].3
1515
with:
1616
github-token: "${{ secrets.PERSONAL_ACCESS_TOKEN }}"
1717
- name: Enable auto-merge for Dependabot PRs

.github/workflows/pr-automation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ jobs:
1919
GH_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
2020
PRNUM: ${{ github.event.pull_request.number }}
2121
PRAUTHOR: ${{ github.event.pull_request.user.login }}
22-
run: gh pr edit $PRNUM --add-reviewer Checkmarx/ast-galactica-team
22+
run: gh pr edit $PRNUM --add-reviewer CheckmarxDev/AST-Plugins

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
${{ runner.os }}-maven-
2727
2828
- name: Set up Maven Central Repository
29-
uses: actions/[email protected].0
29+
uses: actions/[email protected].1
3030
with:
3131
java-version: '11'
3232
distribution: 'temurin'

checkmarx-ast-cli.version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.0.20
1+
2.0.22

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
<dependency>
4949
<groupId>org.slf4j</groupId>
5050
<artifactId>slf4j-simple</artifactId>
51-
<version>1.7.25</version>
51+
<version>1.7.30</version>
5252
</dependency>
5353
<dependency>
5454
<groupId>org.junit.jupiter</groupId>

src/main/java/com/checkmarx/ast/kicsRealtimeResults/kicsRealtimeResults.java renamed to src/main/java/com/checkmarx/ast/kicsRealtimeResults/KicsRealtimeResults.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,22 @@
2121
@JsonDeserialize()
2222
@JsonInclude(JsonInclude.Include.NON_NULL)
2323
@JsonIgnoreProperties(ignoreUnknown = true)
24-
public class kicsRealtimeResults {
24+
public class KicsRealtimeResults {
2525

2626
int totalCount;
2727
String version;
2828
List<KicsResult> results;
2929
KicsSummary kicsSummary;
3030

3131
@JsonCreator
32-
public kicsRealtimeResults(@JsonProperty("total_counter") int totalCount, @JsonProperty("queries") List<KicsResult> results,@JsonProperty("kics_version") String version, @JsonProperty("severity_counters") KicsSummary kicsSummary) {
32+
public KicsRealtimeResults(@JsonProperty("total_counter") int totalCount, @JsonProperty("queries") List<KicsResult> results, @JsonProperty("kics_version") String version, @JsonProperty("severity_counters") KicsSummary kicsSummary) {
3333
this.totalCount = totalCount;
3434
this.version = version;
3535
this.results = results;
3636
this.kicsSummary = kicsSummary;
3737
}
3838
public static <T> T fromLine(String line) {
39-
return parse(line, TypeFactory.defaultInstance().constructType(kicsRealtimeResults.class));
39+
return parse(line, TypeFactory.defaultInstance().constructType(KicsRealtimeResults.class));
4040
}
4141

4242
private static <T> T parse(String line, JavaType type) {
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.checkmarx.ast.remediation;
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
5+
import com.fasterxml.jackson.annotation.JsonInclude;
6+
import com.fasterxml.jackson.annotation.JsonProperty;
7+
import com.fasterxml.jackson.databind.JavaType;
8+
import com.fasterxml.jackson.databind.ObjectMapper;
9+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
10+
import com.fasterxml.jackson.databind.type.TypeFactory;
11+
import lombok.Value;
12+
import org.apache.commons.lang3.StringUtils;
13+
14+
import java.io.IOException;
15+
16+
@Value
17+
@JsonDeserialize()
18+
@JsonInclude(JsonInclude.Include.NON_NULL)
19+
@JsonIgnoreProperties(ignoreUnknown = true)
20+
public class KicsRemediation {
21+
String availableRemediation;
22+
String appliedRemediation;
23+
24+
@JsonCreator
25+
public KicsRemediation(@JsonProperty("available_remediation_count") String availableRemediation, @JsonProperty("applied_remediation_count") String appliedRemediation) {
26+
this.availableRemediation = availableRemediation;
27+
this.appliedRemediation = appliedRemediation;
28+
}
29+
30+
public static <T> T fromLine(String line) {
31+
return parse(line, TypeFactory.defaultInstance().constructType(KicsRemediation.class));
32+
}
33+
34+
private static <T> T parse(String line, JavaType type) {
35+
T result = null;
36+
try {
37+
if (!StringUtils.isBlank(line) && isValidJSON(line)) {
38+
result = new ObjectMapper().readValue(line, type);
39+
40+
}
41+
} catch (IOException e) {
42+
e.printStackTrace();
43+
}
44+
return result;
45+
}
46+
47+
private static boolean isValidJSON(final String json) {
48+
try {
49+
final ObjectMapper mapper = new ObjectMapper();
50+
mapper.readTree(json);
51+
return true;
52+
} catch (IOException e) {
53+
return false;
54+
}
55+
}
56+
}

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

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
import lombok.Data;
66
import lombok.Setter;
77
import org.apache.commons.lang3.StringUtils;
8-
98
import java.util.ArrayList;
109
import java.util.List;
1110
import java.util.regex.Matcher;
1211
import java.util.regex.Pattern;
1312

1413
@Data
1514
@Builder
16-
public class CxConfig {
15+
public class CxConfig {
1716

1817
private static final Pattern pattern = Pattern.compile("([^\"]\\S*|\".+?\")\\s*");
1918

@@ -31,17 +30,6 @@ public void setAdditionalParameters(String additionalParameters) {
3130
this.additionalParameters = parseAdditionalParameters(additionalParameters);
3231
}
3332

34-
void validate() throws InvalidCLIConfigException {
35-
if (StringUtils.isBlank(getBaseUri())) {
36-
throw new InvalidCLIConfigException("Checkmarx server URL is not set");
37-
}
38-
39-
if (StringUtils.isBlank(getApiKey())
40-
&& (StringUtils.isBlank(getClientId()) || StringUtils.isBlank(getClientSecret()))) {
41-
throw new InvalidCLIConfigException("Credentials are not set");
42-
}
43-
}
44-
4533
List<String> toArguments() {
4634
List<String> commands = new ArrayList<>();
4735

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

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

33
import com.checkmarx.ast.codebashing.CodeBashing;
4-
import com.checkmarx.ast.kicsRealtimeResults.kicsRealtimeResults;
4+
import com.checkmarx.ast.kicsRealtimeResults.KicsRealtimeResults;
55
import com.checkmarx.ast.predicate.Predicate;
66
import com.checkmarx.ast.project.Project;
7+
import com.checkmarx.ast.remediation.KicsRemediation;
78
import com.checkmarx.ast.results.ReportFormat;
89
import com.checkmarx.ast.results.Results;
910
import com.checkmarx.ast.results.ResultsSummary;
@@ -40,7 +41,6 @@ public CxWrapper(CxConfig cxConfig)
4041

4142
public CxWrapper(@NonNull CxConfig cxConfig, @NonNull Logger logger) throws CxConfig.InvalidCLIConfigException,
4243
IOException {
43-
cxConfig.validate();
4444
this.cxConfig = cxConfig;
4545
this.logger = logger;
4646
this.executable = StringUtils.isBlank(this.cxConfig.getPathToExecutable())
@@ -319,7 +319,7 @@ public int getResultsBfl(@NonNull UUID scanId, @NonNull String queryId, List<Nod
319319

320320
}
321321

322-
public kicsRealtimeResults kicsRealtimeScan(@NonNull String fileSources,String engine ,String additionalParams)
322+
public KicsRealtimeResults kicsRealtimeScan(@NonNull String fileSources, String engine, String additionalParams)
323323
throws IOException, InterruptedException, CxException {
324324
this.logger.info("Executing 'scan kics-realtime' command using the CLI.");
325325
this.logger.info("Fetching the results for fileSources {} and additionalParams {}", fileSources, additionalParams);
@@ -331,14 +331,40 @@ public kicsRealtimeResults kicsRealtimeScan(@NonNull String fileSources,String e
331331
arguments.add(fileSources);
332332
arguments.add(CxConstants.ADDITONAL_PARAMS);
333333
arguments.add(additionalParams);
334-
if(engine.length()>0){
334+
if (engine.length() > 0) {
335335
arguments.add(CxConstants.ENGINE);
336336
arguments.add(engine);
337337
}
338-
kicsRealtimeResults kicsResults = Execution.executeCommand(withConfigArguments(arguments), logger, kicsRealtimeResults::fromLine);
338+
KicsRealtimeResults kicsResults = Execution.executeCommand(withConfigArguments(arguments), logger, KicsRealtimeResults::fromLine);
339339
return kicsResults;
340+
}
341+
342+
public KicsRemediation kicsRemediate(@NonNull String resultsFile, String kicsFile, String engine,String similarityIds)
343+
throws IOException, InterruptedException, CxException {
344+
this.logger.info("Executing 'remediation kics' command using the CLI.");
345+
this.logger.info("Applying remediation for resultsFile {} and resultsFile {}", resultsFile, kicsFile);
340346

347+
List<String> arguments = new ArrayList<>();
348+
arguments.add(this.executable);
349+
arguments.add("utils");
350+
arguments.add("remediation");
351+
arguments.add("kics");
352+
arguments.add("--results-file");
353+
arguments.add(resultsFile);
354+
arguments.add("--kics-files");
355+
arguments.add(kicsFile);
356+
if (engine.length() > 0) {
357+
arguments.add(CxConstants.ENGINE);
358+
arguments.add(engine);
359+
}
360+
if (similarityIds.length() > 0) {
361+
arguments.add("--similarity-ids");
362+
arguments.add(similarityIds);
363+
}
364+
KicsRemediation remediation = Execution.executeCommand(arguments, logger, KicsRemediation::fromLine);
365+
return remediation;
341366
}
367+
342368
private int getIndexOfBfLNode(List<Node> bflNodes, List<Node> resultNodes) {
343369

344370
int bflNodeNotFound = -1;

0 commit comments

Comments
 (0)