Skip to content

Commit 1f85dc7

Browse files
authored
Add secrets-realtime command and corresponding scan results method (AST-99450) (#843)
* Add secrets-realtime command and corresponding scan results method * Add support for secrets scanning with new CxSecretsResult class and update execution commands * Add severity property to CxSecretsResult for enhanced secrets scanning details * Refactor CxSecrets parsing logic to handle resultObject directly for improved clarity * Fix command constants in ossScanResults and secretsScanResults methods; update test case for secrets scanning * Skip successful case test for ScanSecrets in ScanTest
1 parent e8a3005 commit 1f85dc7

File tree

6 files changed

+179
-109
lines changed

6 files changed

+179
-109
lines changed

src/main/secrets/CxSecrets.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
export default class CxSecretsResult {
2+
title: string;
3+
description: string;
4+
filepath: string;
5+
severity: string;
6+
locations: { line: number, startIndex: number, endIndex: number }[];
7+
8+
static parseResult(resultObject: any): CxSecretsResult[] {
9+
let secretsResults: CxSecretsResult[] = [];
10+
if (resultObject instanceof Array) {
11+
secretsResults = resultObject.map((member: any) => {
12+
const secretsResult = new CxSecretsResult();
13+
secretsResult.title = member.Title;
14+
secretsResult.description = member.Description;
15+
secretsResult.filepath = member.FilePath;
16+
secretsResult.severity = member.Severity;
17+
secretsResult.locations = Array.isArray(member.Locations)
18+
? member.Locations.map((l: any) => ({
19+
line: l.Line,
20+
startIndex: l.StartIndex,
21+
endIndex: l.EndIndex,
22+
}))
23+
: [];
24+
return secretsResult;
25+
});
26+
} else {
27+
const secretsResult = new CxSecretsResult();
28+
secretsResult.title = resultObject.Title;
29+
secretsResult.description = resultObject.Description;
30+
secretsResult.severity = resultObject.Severity;
31+
secretsResult.filepath = resultObject.FilePath;
32+
secretsResult.filepath = resultObject.FilePath;
33+
secretsResult.locations = Array.isArray(resultObject.Locations)
34+
? resultObject.Locations.map((l: any) => ({
35+
line: l.Line,
36+
startIndex: l.StartIndex,
37+
endIndex: l.EndIndex,
38+
}))
39+
: [];
40+
secretsResults.push(secretsResult);
41+
}
42+
return secretsResults;
43+
}
44+
}

src/main/wrapper/CxConstants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ export enum CxConstants {
7373
SOURCE_FILE = "--file-source",
7474
ASCA_UPDATE_VERSION = "--asca-latest-version",
7575
CMD_OSS = "oss-realtime",
76+
CMD_SECRETS = "secrets-realtime",
7677
PROJECT_ID = "--project-id",
7778
SIMILARITY_ID = "--similarity-id",
7879
QUERY_ID = "--query-id",
@@ -89,6 +90,7 @@ export enum CxConstants {
8990
SCAN_TYPE = "CxScan",
9091
SCAN_ASCA = "CxAsca",
9192
SCAN_OSS = "CxOss",
93+
SCAN_SECRETS = "CxSecrets",
9294
PROJECT_TYPE = "CxProject",
9395
PREDICATE_TYPE = "CxPredicate",
9496
CODE_BASHING_TYPE = "CxCodeBashing",

src/main/wrapper/CxWrapper.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,13 @@ export class CxWrapper {
156156
return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_OSS);
157157
}
158158

159+
async secretsScanResults(sourceFile: string): Promise<CxCommandOutput> {
160+
const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_SECRETS, CxConstants.SOURCE, sourceFile];
161+
commands.push(...this.initializeCommands(false));
162+
const exec = new ExecutionService();
163+
return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_SECRETS);
164+
}
165+
159166
async scanCancel(id: string): Promise<CxCommandOutput> {
160167
const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.SUB_CMD_CANCEL, CxConstants.SCAN_ID, id];
161168
commands.push(...this.initializeCommands(false));

0 commit comments

Comments
 (0)