Skip to content

Commit 053a50f

Browse files
cx-miryam-foifergithub-actionscx-ben-alvoBenAlvo1
committed
Update Vorpal Name to ASCA(AST-65647) (#759)
* Update Vorpal Name to ASCA * update ast-cli to pre-release version * update ast-cli to pre-release version - 2 * Track Checkmarx CLI binaries with Git LFS * Update checkmarx-ast-cli to 2.2.6 --------- Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: AlvoBen <144705560+AlvoBen@users.noreply.github.com> Co-authored-by: AlvoBen <alvo@post.bgu.ac.il>
1 parent f10e381 commit 053a50f

File tree

10 files changed

+4462
-8016
lines changed

10 files changed

+4462
-8016
lines changed

package-lock.json

Lines changed: 4383 additions & 7944 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/vorpal/VorpalScanDetail.ts renamed to src/main/asca/AscaScanDetail.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default class VorpalScanDetail {
1+
export default class AscaScanDetail {
22
ruleId: number;
33
language: string;
44
ruleName: string;

src/main/vorpal/CxVorpal.ts renamed to src/main/asca/CxAsca.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import VorpalScanDetail from "./VorpalScanDetail";
1+
import AscaScanDetail from "./AscaScanDetail";
22

3-
export default class CxVorpal {
3+
export default class CxAsca {
44
requestId: string;
55
status: boolean;
66
message: string;
7-
scanDetails: VorpalScanDetail[];
7+
scanDetails: AscaScanDetail[];
88
error: any;
99

1010
constructor() {
@@ -15,16 +15,16 @@ export default class CxVorpal {
1515
this.error = null;
1616
}
1717

18-
static parseScan(resultObject: any): CxVorpal {
19-
const scan = new CxVorpal();
18+
static parseScan(resultObject: any): CxAsca {
19+
const scan = new CxAsca();
2020
scan.requestId = resultObject.request_id;
2121
scan.status = resultObject.status;
2222
scan.message = resultObject.message;
2323
scan.error = resultObject.error;
2424

2525
if (resultObject.scan_details instanceof Array) {
2626
scan.scanDetails = resultObject.scan_details.map((detail: any) => {
27-
const scanDetail = new VorpalScanDetail();
27+
const scanDetail = new AscaScanDetail();
2828
scanDetail.ruleId = detail.rule_id;
2929
scanDetail.language = detail.language;
3030
scanDetail.ruleName = detail.rule_name;

src/main/wrapper/CxConstants.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ export enum CxConstants {
6565
FORMAT_HTML_CLI = "summaryHTML",
6666
FILTER = "--filter",
6767
SCAN_ID = "--scan-id",
68-
CMD_VORPAL = "vorpal",
68+
CMD_ASCA = "asca",
6969
SOURCE_FILE = "--file-source",
70-
VORPAL_UPDATE_VERSION = "--vorpal-latest-version",
70+
ASCA_UPDATE_VERSION = "--asca-latest-version",
7171
PROJECT_ID = "--project-id",
7272
SIMILARITY_ID = "--similarity-id",
7373
QUERY_ID = "--query-id",
@@ -81,7 +81,7 @@ export enum CxConstants {
8181
ADDITONAL_PARAMS = "--additional-params",
8282
ENGINE = "--engine",
8383
SCAN_TYPE = "CxScan",
84-
SCAN_VORPAL = "CxVorpal",
84+
SCAN_ASCA = "CxAsca",
8585
PROJECT_TYPE = "CxProject",
8686
PREDICATE_TYPE = "CxPredicate",
8787
CODE_BASHING_TYPE = "CxCodeBashing",

src/main/wrapper/CxWrapper.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,11 @@ export class CxWrapper {
147147
return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_TYPE);
148148
}
149149

150-
async scanVorpal(sourceFile: string, updateVersion = false, agent?: string | null): Promise<CxCommandOutput> {
151-
const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_VORPAL, CxConstants.SOURCE_FILE, sourceFile];
150+
async scanAsca(sourceFile: string, updateVersion = false, agent?: string | null): Promise<CxCommandOutput> {
151+
const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_ASCA, CxConstants.SOURCE_FILE, sourceFile];
152152

153153
if (updateVersion) {
154-
commands.push(CxConstants.VORPAL_UPDATE_VERSION);
154+
commands.push(CxConstants.ASCA_UPDATE_VERSION);
155155
}
156156
if (agent) {
157157
commands.push(CxConstants.AGENT);
@@ -165,7 +165,7 @@ export class CxWrapper {
165165

166166
commands.push(...this.initializeCommands(false));
167167
const exec = new ExecutionService();
168-
return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_VORPAL);
168+
return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_ASCA);
169169
}
170170

171171
async scanCancel(id: string): Promise<CxCommandOutput> {

src/main/wrapper/ExecutionService.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import CxKicsRemediation from "../remediation/CxKicsRemediation";
2222
import CxScaRealTime from "../scaRealtime/CxScaRealTime";
2323
import CxChat from "../chat/CxChat";
2424
import CxMask from "../mask/CxMask";
25-
import CxVorpal from "../vorpal/CxVorpal";
25+
import CxAsca from "../asca/CxAsca";
2626

2727
let skipValue = false;
2828
const fileSourceFlag = "--file-source"
@@ -200,9 +200,9 @@ export class ExecutionService {
200200
const scans = CxScan.parseProject(resultObject);
201201
cxCommandOutput.payload = scans;
202202
break;
203-
case CxConstants.SCAN_VORPAL:
204-
const vorpal = CxVorpal.parseScan(resultObject);
205-
cxCommandOutput.payload = [vorpal];
203+
case CxConstants.SCAN_ASCA:
204+
const asca = CxAsca.parseScan(resultObject);
205+
cxCommandOutput.payload = [asca];
206206
break;
207207
case CxConstants.PROJECT_TYPE:
208208
const projects = CxProject.parseProject(resultObject);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:84c22ba2aac3a10fdbcdc4a497b90b1f19cfac05903734726505f3f07d651c42
3+
size 66171032

src/main/wrapper/resources/cx-mac

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:17d7887c19d7cae0b63c62eaa7f17ef85a1726ae4e9ab62405d73346de450875
3+
size 134051856

src/main/wrapper/resources/cx.exe

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:71cad5fe4002448c9b9af6c8f9e61edb85c182186ac834a4300ba846b26612f7
3+
size 67934600

src/tests/ScanTest.test.ts

Lines changed: 52 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1+
import { CxWrapper } from '../main/wrapper/CxWrapper';
12
import { CxCommandOutput } from "../main/wrapper/CxCommandOutput";
23
import { CxParamType } from "../main/wrapper/CxParamType";
34
import { BaseTest } from "./BaseTest";
4-
import CxWrapperFactory from "../main/wrapper/CxWrapperFactory";
5-
6-
const cxWrapperFactory = new CxWrapperFactory();
75

86
describe("ScanCreate cases", () => {
97
const cxScanConfig = new BaseTest();
108
it('ScanList Successful case', async () => {
11-
const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
9+
const auth = new CxWrapper(cxScanConfig);
1210
const cxCommandOutput: CxCommandOutput = await auth.scanList("");
1311
console.log(" Json object from scanList successful case: " + JSON.stringify(cxCommandOutput));
1412
expect(cxCommandOutput.payload.length).toBeGreaterThan(1);
@@ -22,7 +20,7 @@ describe("ScanCreate cases", () => {
2220
params.set(CxParamType.FILTER, "*.ts,!**/node_modules/**/*");
2321
params.set(CxParamType.BRANCH, "master");
2422
params.set(CxParamType.SCAN_TYPES,"kics");
25-
const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
23+
const auth = new CxWrapper(cxScanConfig);
2624
const cxCommandOutput: CxCommandOutput = await auth.scanCreate(params);
2725
const scanObject = cxCommandOutput.payload.pop();
2826
const scanShowObject = await auth.scanShow(scanObject.id);
@@ -37,7 +35,7 @@ describe("ScanCreate cases", () => {
3735
params.set(CxParamType.SAST_PRESET_NAME, "Checkmarx Default Fake");
3836
params.set(CxParamType.BRANCH, "master");
3937
params.set(CxParamType.SCAN_TYPES, "sast");
40-
const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
38+
const auth = new CxWrapper(cxScanConfig);
4139
const cxCommandOutput: CxCommandOutput = await auth.scanCreate(params);
4240
const scanObject = cxCommandOutput.payload.pop();
4341
const scanShowObject = await auth.scanShow(scanObject.id);
@@ -52,7 +50,7 @@ describe("ScanCreate cases", () => {
5250
params.set(CxParamType.FILTER, "*.ts,!**/node_modules/**/*");
5351
params.set(CxParamType.BRANCH, "master");
5452
params.set(CxParamType.ADDITIONAL_PARAMETERS, "--scan-types sast");
55-
const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
53+
const auth = new CxWrapper(cxScanConfig);
5654
const cxCommandOutput: CxCommandOutput = await auth.scanCreate(params);
5755
const scanObject = cxCommandOutput.payload.pop();
5856
const scanShowObject = await auth.scanShow(scanObject.id);
@@ -68,7 +66,7 @@ describe("ScanCreate cases", () => {
6866
params.set(CxParamType.SAST_PRESET_NAME, "Checkmarx Default Fake");
6967
params.set(CxParamType.ADDITIONAL_PARAMETERS, "--async");
7068
params.set(CxParamType.BRANCH, "master");
71-
const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
69+
const auth = new CxWrapper(cxScanConfig);
7270
const cxCommandOutput: CxCommandOutput = await auth.scanCreate(params);
7371
const scanObject = cxCommandOutput.payload.pop();
7472
const scanShowObject = await auth.scanShow(scanObject.id);
@@ -83,7 +81,7 @@ describe("ScanCreate cases", () => {
8381
params.set(CxParamType.BRANCH, "master");
8482
params.set(CxParamType.FILTER, "*.ts,!**/node_modules/**/*");
8583
params.set(CxParamType.ADDITIONAL_PARAMETERS, "--async");
86-
const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
84+
const auth = new CxWrapper(cxScanConfig);
8785
const cxCommandOutput: CxCommandOutput = await auth.scanCreate(params);
8886
const scanObject = cxCommandOutput.payload.pop();
8987
await auth.scanCancel(scanObject.id)
@@ -92,7 +90,7 @@ describe("ScanCreate cases", () => {
9290
})
9391

9492
it('KicsRealtime Successful case ', async () => {
95-
const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
93+
const auth = new CxWrapper(cxScanConfig);
9694
const [outputProcess,pid] = await auth.kicsRealtimeScan("dist/tests/data/Dockerfile","docker","-v");
9795
const cxCommandOutput: CxCommandOutput = await outputProcess;
9896
console.log(" Json object from successful no wait mode case: " + JSON.stringify( cxCommandOutput.payload));
@@ -103,7 +101,7 @@ describe("ScanCreate cases", () => {
103101
})
104102

105103
it('ScaRealtime Successful case', async () => {
106-
const wrapper = await cxWrapperFactory.createWrapper(cxScanConfig);
104+
const wrapper = new CxWrapper(cxScanConfig);
107105
const cxCommandOutput: CxCommandOutput = await wrapper.runScaRealtimeScan(process.cwd());
108106
if(cxCommandOutput.exitCode == 1) {
109107
expect(cxCommandOutput.payload).toBeUndefined();
@@ -115,58 +113,58 @@ describe("ScanCreate cases", () => {
115113

116114
it("Should check if scan create is possible", async() => {
117115
const cxScanConfig = new BaseTest();
118-
const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
116+
const auth = new CxWrapper(cxScanConfig);
119117
const tenantSettings: boolean = await auth.ideScansEnabled();
120118
expect(tenantSettings).toBeDefined();
121119
})
122120

123121
it("Should check if AI guided remediation is active", async() => {
124122
const cxScanConfig = new BaseTest();
125-
const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
123+
const auth = new CxWrapper(cxScanConfig);
126124
const aiEnabled: boolean = await auth.guidedRemediationEnabled();
127125
expect(aiEnabled).toBeDefined();
128126
})
129127

130-
// it('ScanVorpal fail case Without extensions', async () => {
131-
// const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
132-
// const cxCommandOutput: CxCommandOutput = await auth.scanVorpal("tsc/tests/data/python-file");
133-
// console.log(" Json object from failure case: " + JSON.stringify(cxCommandOutput));
134-
//
135-
// expect(cxCommandOutput.payload[0].error.description).toEqual("The file name must have an extension.");
136-
// expect(cxCommandOutput.exitCode).toBe(0);
137-
// expect(cxCommandOutput.payload[0].status).toBeUndefined();
138-
// });
139-
140-
// it('ScanVorpal Successful case', async () => {
141-
// const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
142-
// const cxCommandOutput: CxCommandOutput = await auth.scanVorpal("tsc/tests/data/python-vul-file.py");
143-
// console.log("Json object from scanVorpal successful case: " + JSON.stringify(cxCommandOutput));
144-
// const scanObject = cxCommandOutput.payload.pop();
145-
// expect(cxCommandOutput.payload).toBeDefined();
146-
// expect(cxCommandOutput.exitCode).toBe(0);
147-
// expect(scanObject.status).toEqual(true);
148-
// });
149-
//
150-
// it('ScanVorpal with complex name Successful case', async () => {
151-
// const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
152-
// const cxCommandOutput: CxCommandOutput = await auth.scanVorpal("tsc/tests/data/var express = require('express';.js");
153-
// console.log("Json object from scanVorpal successful case: " + JSON.stringify(cxCommandOutput));
154-
// const scanObject = cxCommandOutput.payload.pop();
155-
// expect(cxCommandOutput.payload).toBeDefined();
156-
// expect(cxCommandOutput.exitCode).toBe(0);
157-
// expect(scanObject.status).toEqual(true);
158-
// });
159-
//
160-
// it('ScanVorpal Successful case with update version', async () => {
161-
// const auth = await cxWrapperFactory.createWrapper(cxScanConfig);
162-
// const cxCommandOutput: CxCommandOutput = await auth.scanVorpal("tsc/tests/data/python-vul-file.py", true);
163-
// console.log("Json object from scanVorpal successful case with update version: " + JSON.stringify(cxCommandOutput));
164-
// const scanObject = cxCommandOutput.payload.pop();
165-
// expect(cxCommandOutput.payload).toBeDefined();
166-
// expect(cxCommandOutput.exitCode).toBe(0);
167-
// expect(scanObject.status).toEqual(true);
168-
// expect(Number.isInteger(scanObject.scanDetails[0].line)).toBe(true);
169-
// expect(typeof scanObject.scanDetails[0].description).toBe('string');
170-
// });
128+
it('ScanAsca fail case Without extensions', async () => {
129+
const auth = new CxWrapper(cxScanConfig);
130+
const cxCommandOutput: CxCommandOutput = await auth.scanAsca("tsc/tests/data/python-file");
131+
console.log(" Json object from failure case: " + JSON.stringify(cxCommandOutput));
132+
133+
expect(cxCommandOutput.payload[0].error.description).toEqual("The file name must have an extension.");
134+
expect(cxCommandOutput.exitCode).toBe(0);
135+
expect(cxCommandOutput.payload[0].status).toBeUndefined();
136+
});
137+
138+
it('ScanAsca Successful case', async () => {
139+
const auth = new CxWrapper(cxScanConfig);
140+
const cxCommandOutput: CxCommandOutput = await auth.scanAsca("tsc/tests/data/python-vul-file.py");
141+
console.log("Json object from scanAsca successful case: " + JSON.stringify(cxCommandOutput));
142+
const scanObject = cxCommandOutput.payload.pop();
143+
expect(cxCommandOutput.payload).toBeDefined();
144+
expect(cxCommandOutput.exitCode).toBe(0);
145+
expect(scanObject.status).toEqual(true);
146+
});
147+
148+
it('ScanAsca with complex name Successful case', async () => {
149+
const auth = new CxWrapper(cxScanConfig);
150+
const cxCommandOutput: CxCommandOutput = await auth.scanAsca("tsc/tests/data/var express = require('express';.js");
151+
console.log("Json object from scanAsca successful case: " + JSON.stringify(cxCommandOutput));
152+
const scanObject = cxCommandOutput.payload.pop();
153+
expect(cxCommandOutput.payload).toBeDefined();
154+
expect(cxCommandOutput.exitCode).toBe(0);
155+
expect(scanObject.status).toEqual(true);
156+
});
157+
158+
it('ScanAsca Successful case with update version', async () => {
159+
const auth = new CxWrapper(cxScanConfig);
160+
const cxCommandOutput: CxCommandOutput = await auth.scanAsca("tsc/tests/data/python-vul-file.py", true);
161+
console.log("Json object from scanAsca successful case with update version: " + JSON.stringify(cxCommandOutput));
162+
const scanObject = cxCommandOutput.payload.pop();
163+
expect(cxCommandOutput.payload).toBeDefined();
164+
expect(cxCommandOutput.exitCode).toBe(0);
165+
expect(scanObject.status).toEqual(true);
166+
expect(Number.isInteger(scanObject.scanDetails[0].line)).toBe(true);
167+
expect(typeof scanObject.scanDetails[0].description).toBe('string');
168+
});
171169

172170
});

0 commit comments

Comments
 (0)