From dbae0c8741345f6115f6ee5f4c539d6e8c478bc8 Mon Sep 17 00:00:00 2001 From: galactica <173361628+cx-sarah-chen@users.noreply.github.com> Date: Thu, 8 May 2025 14:08:21 +0300 Subject: [PATCH 1/6] save my work --- src/main/oss/CxManifestStatus.ts | 5 ++++ src/main/oss/CxOss.ts | 45 ++++++++++++++++++++++++++++ src/main/wrapper/CxConstants.ts | 2 ++ src/main/wrapper/CxWrapper.ts | 7 +++++ src/main/wrapper/ExecutionService.ts | 5 ++++ 5 files changed, 64 insertions(+) create mode 100644 src/main/oss/CxManifestStatus.ts create mode 100644 src/main/oss/CxOss.ts diff --git a/src/main/oss/CxManifestStatus.ts b/src/main/oss/CxManifestStatus.ts new file mode 100644 index 00000000..8b257482 --- /dev/null +++ b/src/main/oss/CxManifestStatus.ts @@ -0,0 +1,5 @@ +export enum CxManifestStatus { + MALICIOUS = 'malicious', + UNKNOWN = 'unknown', + OK = 'ok' +} \ No newline at end of file diff --git a/src/main/oss/CxOss.ts b/src/main/oss/CxOss.ts new file mode 100644 index 00000000..39c492b4 --- /dev/null +++ b/src/main/oss/CxOss.ts @@ -0,0 +1,45 @@ +import {CxManifestStatus} from './CxManifestStatus'; + +export default class CxOssResult { + packageManager : string; + packageName : string; + version : string; + filepath : string; + lineStart : number; + lineEnd : number; + startIndex : number; + endIndex : number; + status :CxManifestStatus; + + + static parseResult(resultObject: any): CxOssResult[] { + let ossResults: CxOssResult[] = []; + const ossResult = new CxOssResult(); + if (resultObject instanceof Array) { + ossResults = resultObject.map((member: any) => { + ossResult.packageManager = member.PackageManager; + ossResult.packageName = member.PackageName; + ossResult.version = member.Version; + ossResult.filepath = member.FilePath; + ossResult.lineStart = member.LineStart; + ossResult.lineEnd = member.LineEnd; + ossResult.startIndex = member.StartIndex; + ossResult.endIndex = member.EndIndex; + ossResult.status = member.Status as CxManifestStatus; + return ossResult; + }); + } else { + ossResult.packageManager = resultObject.PackageManager; + ossResult.packageName = resultObject.PackageName; + ossResult.version = resultObject.Version; + ossResult.filepath = resultObject.FilePath; + ossResult.lineStart = resultObject.LineStart; + ossResult.lineEnd = resultObject.LineEnd; + ossResult.startIndex = resultObject.StartIndex; + ossResult.endIndex = resultObject.EndIndex; + ossResult.status = resultObject.Status as CxManifestStatus; + ossResults.push(ossResult); + } + return ossResults; + } +} diff --git a/src/main/wrapper/CxConstants.ts b/src/main/wrapper/CxConstants.ts index 49d7643d..1813fa4d 100644 --- a/src/main/wrapper/CxConstants.ts +++ b/src/main/wrapper/CxConstants.ts @@ -72,6 +72,7 @@ export enum CxConstants { CMD_ASCA = "asca", SOURCE_FILE = "--file-source", ASCA_UPDATE_VERSION = "--asca-latest-version", + CMD_OSS = "oss-realtime", PROJECT_ID = "--project-id", SIMILARITY_ID = "--similarity-id", QUERY_ID = "--query-id", @@ -87,6 +88,7 @@ export enum CxConstants { ENGINE = "--engine", SCAN_TYPE = "CxScan", SCAN_ASCA = "CxAsca", + SCAN_OSS = "CxOSS", PROJECT_TYPE = "CxProject", PREDICATE_TYPE = "CxPredicate", CODE_BASHING_TYPE = "CxCodeBashing", diff --git a/src/main/wrapper/CxWrapper.ts b/src/main/wrapper/CxWrapper.ts index 228554ea..17f0f22a 100644 --- a/src/main/wrapper/CxWrapper.ts +++ b/src/main/wrapper/CxWrapper.ts @@ -147,6 +147,13 @@ export class CxWrapper { return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_ASCA); } + async scanOSS(sourceFile: string): Promise { + const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_OSS, CxConstants.SOURCE, sourceFile]; + commands.push(...this.initializeCommands(false)); + const exec = new ExecutionService(); + return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_OSS); + } + async scanCancel(id: string): Promise { const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.SUB_CMD_CANCEL, CxConstants.SCAN_ID, id]; commands.push(...this.initializeCommands(false)); diff --git a/src/main/wrapper/ExecutionService.ts b/src/main/wrapper/ExecutionService.ts index 57fff4dd..f16e1bfd 100644 --- a/src/main/wrapper/ExecutionService.ts +++ b/src/main/wrapper/ExecutionService.ts @@ -23,6 +23,7 @@ import CxScaRealTime from "../scaRealtime/CxScaRealTime"; import CxChat from "../chat/CxChat"; import CxMask from "../mask/CxMask"; import CxAsca from "../asca/CxAsca"; +import CxOssResult from "../oss/CxOss"; let skipValue = false; const fileSourceFlag = "--file-source" @@ -205,6 +206,10 @@ export class ExecutionService { const asca = CxAsca.parseScan(resultObject); cxCommandOutput.payload = [asca]; break; + case CxConstants.SCAN_OSS: + const oss = CxOssResult.parseResult(resultObject); + cxCommandOutput.payload = [oss]; + break; case CxConstants.PROJECT_TYPE: const projects = CxProject.parseProject(resultObject); cxCommandOutput.payload = projects; From 2f43b58c756d14fd3779faa5b95d90d6209e1464 Mon Sep 17 00:00:00 2001 From: galactica <173361628+cx-sarah-chen@users.noreply.github.com> Date: Thu, 8 May 2025 15:16:24 +0300 Subject: [PATCH 2/6] fix --- src/main/oss/CxManifestStatus.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/oss/CxManifestStatus.ts b/src/main/oss/CxManifestStatus.ts index 8b257482..06dd01a7 100644 --- a/src/main/oss/CxManifestStatus.ts +++ b/src/main/oss/CxManifestStatus.ts @@ -1,5 +1,5 @@ export enum CxManifestStatus { - MALICIOUS = 'malicious', - UNKNOWN = 'unknown', - OK = 'ok' -} \ No newline at end of file + malicious = "malicious", + ok = "ok", + unknown = "unknown" +} From 753f8d45f3dcf90540e84dc171951a239295a3f6 Mon Sep 17 00:00:00 2001 From: galactica <173361628+cx-sarah-chen@users.noreply.github.com> Date: Thu, 8 May 2025 23:28:53 +0300 Subject: [PATCH 3/6] fix --- src/main/oss/CxManifestStatus.ts | 6 +++--- src/main/oss/CxOss.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/oss/CxManifestStatus.ts b/src/main/oss/CxManifestStatus.ts index 06dd01a7..3eaf8d79 100644 --- a/src/main/oss/CxManifestStatus.ts +++ b/src/main/oss/CxManifestStatus.ts @@ -1,5 +1,5 @@ export enum CxManifestStatus { - malicious = "malicious", - ok = "ok", - unknown = "unknown" + malicious = "Malicious", + ok = "Ok", + unknown = "Unknown" } diff --git a/src/main/oss/CxOss.ts b/src/main/oss/CxOss.ts index 39c492b4..b8ed467f 100644 --- a/src/main/oss/CxOss.ts +++ b/src/main/oss/CxOss.ts @@ -20,7 +20,7 @@ export default class CxOssResult { ossResult.packageManager = member.PackageManager; ossResult.packageName = member.PackageName; ossResult.version = member.Version; - ossResult.filepath = member.FilePath; + ossResult.filepath = member.Filepath; ossResult.lineStart = member.LineStart; ossResult.lineEnd = member.LineEnd; ossResult.startIndex = member.StartIndex; From 120fe61e5cf5ed7d5da9d26878ef6ec7c276d50a Mon Sep 17 00:00:00 2001 From: galactica <173361628+cx-sarah-chen@users.noreply.github.com> Date: Mon, 12 May 2025 10:52:22 +0300 Subject: [PATCH 4/6] more --- src/main/oss/CxOss.ts | 3 ++- src/tests/Oss.test.ts | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/tests/Oss.test.ts diff --git a/src/main/oss/CxOss.ts b/src/main/oss/CxOss.ts index b8ed467f..3dbfe7e2 100644 --- a/src/main/oss/CxOss.ts +++ b/src/main/oss/CxOss.ts @@ -14,9 +14,9 @@ export default class CxOssResult { static parseResult(resultObject: any): CxOssResult[] { let ossResults: CxOssResult[] = []; - const ossResult = new CxOssResult(); if (resultObject instanceof Array) { ossResults = resultObject.map((member: any) => { + const ossResult = new CxOssResult(); ossResult.packageManager = member.PackageManager; ossResult.packageName = member.PackageName; ossResult.version = member.Version; @@ -29,6 +29,7 @@ export default class CxOssResult { return ossResult; }); } else { + const ossResult = new CxOssResult(); ossResult.packageManager = resultObject.PackageManager; ossResult.packageName = resultObject.PackageName; ossResult.version = resultObject.Version; diff --git a/src/tests/Oss.test.ts b/src/tests/Oss.test.ts new file mode 100644 index 00000000..dbad4691 --- /dev/null +++ b/src/tests/Oss.test.ts @@ -0,0 +1,18 @@ +import {CxWrapper} from '../main/wrapper/CxWrapper'; +import {CxCommandOutput} from "../main/wrapper/CxCommandOutput"; +import {BaseTest} from "./BaseTest"; +import {CxParamType} from "../main/wrapper/CxParamType"; +import CxScan from "../main/scan/CxScan"; + +describe("ProjectList cases",() => { + const cxScanConfig = new BaseTest(); + + it('ScanAsca Successful case', async () => { + const auth = new CxWrapper(cxScanConfig); + const cxCommandOutput: CxCommandOutput = await auth.scanOSS("tsc/tests/data/python-vul-file.py"); + console.log("Json object from scanOSS successful case: " + JSON.stringify(cxCommandOutput)); + const scanObject = cxCommandOutput.payload.pop(); + expect(cxCommandOutput.payload).toBeDefined(); + expect(cxCommandOutput.exitCode).toBe(0); + }); +}); \ No newline at end of file From a2e0e6821b027a34f038c0e92d9f9e3ca42feef1 Mon Sep 17 00:00:00 2001 From: galactica <173361628+cx-sarah-chen@users.noreply.github.com> Date: Mon, 12 May 2025 11:55:05 +0300 Subject: [PATCH 5/6] More --- src/tests/Oss.test.ts | 18 ------------------ src/tests/ScanTest.test.ts | 8 ++++++++ tsc/tests/data/package.json | 8 ++++++++ 3 files changed, 16 insertions(+), 18 deletions(-) delete mode 100644 src/tests/Oss.test.ts create mode 100644 tsc/tests/data/package.json diff --git a/src/tests/Oss.test.ts b/src/tests/Oss.test.ts deleted file mode 100644 index dbad4691..00000000 --- a/src/tests/Oss.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import {CxWrapper} from '../main/wrapper/CxWrapper'; -import {CxCommandOutput} from "../main/wrapper/CxCommandOutput"; -import {BaseTest} from "./BaseTest"; -import {CxParamType} from "../main/wrapper/CxParamType"; -import CxScan from "../main/scan/CxScan"; - -describe("ProjectList cases",() => { - const cxScanConfig = new BaseTest(); - - it('ScanAsca Successful case', async () => { - const auth = new CxWrapper(cxScanConfig); - const cxCommandOutput: CxCommandOutput = await auth.scanOSS("tsc/tests/data/python-vul-file.py"); - console.log("Json object from scanOSS successful case: " + JSON.stringify(cxCommandOutput)); - const scanObject = cxCommandOutput.payload.pop(); - expect(cxCommandOutput.payload).toBeDefined(); - expect(cxCommandOutput.exitCode).toBe(0); - }); -}); \ No newline at end of file diff --git a/src/tests/ScanTest.test.ts b/src/tests/ScanTest.test.ts index 8fcfc86d..0434c0e3 100644 --- a/src/tests/ScanTest.test.ts +++ b/src/tests/ScanTest.test.ts @@ -166,5 +166,13 @@ describe("ScanCreate cases", () => { expect(Number.isInteger(scanObject.scanDetails[0].line)).toBe(true); expect(typeof scanObject.scanDetails[0].description).toBe('string'); }); + + it('ScanOss Successful case', async () => { + const auth = new CxWrapper(cxScanConfig); + const cxCommandOutput: CxCommandOutput = await auth.scanOSS("tsc/tests/data/python-vul-file.py"); + console.log("Json object from scanOSS successful case: " + JSON.stringify(cxCommandOutput)); + expect(cxCommandOutput.payload).toBeDefined(); + expect(cxCommandOutput.exitCode).toBe(0); + }); }); diff --git a/tsc/tests/data/package.json b/tsc/tests/data/package.json new file mode 100644 index 00000000..0d9789b5 --- /dev/null +++ b/tsc/tests/data/package.json @@ -0,0 +1,8 @@ +{ + "name": "test", + "version": "0.0.1", + "description": "AST CLI Javascript wrapper tests", + "dependencies": { + "log4js": "^6.9.1" + } +} From 45196bee3c8a907fe28257db1cafa0341193a2c3 Mon Sep 17 00:00:00 2001 From: galactica <173361628+cx-sarah-chen@users.noreply.github.com> Date: Mon, 12 May 2025 14:03:45 +0300 Subject: [PATCH 6/6] More --- src/main/wrapper/CxConstants.ts | 2 +- src/main/wrapper/CxWrapper.ts | 2 +- src/tests/ScanTest.test.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/wrapper/CxConstants.ts b/src/main/wrapper/CxConstants.ts index 1813fa4d..13eb042e 100644 --- a/src/main/wrapper/CxConstants.ts +++ b/src/main/wrapper/CxConstants.ts @@ -88,7 +88,7 @@ export enum CxConstants { ENGINE = "--engine", SCAN_TYPE = "CxScan", SCAN_ASCA = "CxAsca", - SCAN_OSS = "CxOSS", + SCAN_OSS = "CxOss", PROJECT_TYPE = "CxProject", PREDICATE_TYPE = "CxPredicate", CODE_BASHING_TYPE = "CxCodeBashing", diff --git a/src/main/wrapper/CxWrapper.ts b/src/main/wrapper/CxWrapper.ts index 17f0f22a..23807e8a 100644 --- a/src/main/wrapper/CxWrapper.ts +++ b/src/main/wrapper/CxWrapper.ts @@ -147,7 +147,7 @@ export class CxWrapper { return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_ASCA); } - async scanOSS(sourceFile: string): Promise { + async scanOss(sourceFile: string): Promise { const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_OSS, CxConstants.SOURCE, sourceFile]; commands.push(...this.initializeCommands(false)); const exec = new ExecutionService(); diff --git a/src/tests/ScanTest.test.ts b/src/tests/ScanTest.test.ts index 0434c0e3..33011dc7 100644 --- a/src/tests/ScanTest.test.ts +++ b/src/tests/ScanTest.test.ts @@ -169,7 +169,7 @@ describe("ScanCreate cases", () => { it('ScanOss Successful case', async () => { const auth = new CxWrapper(cxScanConfig); - const cxCommandOutput: CxCommandOutput = await auth.scanOSS("tsc/tests/data/python-vul-file.py"); + const cxCommandOutput: CxCommandOutput = await auth.scanOss("tsc/tests/data/package.json"); console.log("Json object from scanOSS successful case: " + JSON.stringify(cxCommandOutput)); expect(cxCommandOutput.payload).toBeDefined(); expect(cxCommandOutput.exitCode).toBe(0);