Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/main/oss/CxManifestStatus.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export enum CxManifestStatus {
malicious = "Malicious",
ok = "Ok",
unknown = "Unknown"
}
46 changes: 46 additions & 0 deletions src/main/oss/CxOss.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
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[] = [];
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;
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 {
const ossResult = new CxOssResult();
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;
}
}
2 changes: 2 additions & 0 deletions src/main/wrapper/CxConstants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand Down
7 changes: 7 additions & 0 deletions src/main/wrapper/CxWrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,13 @@ export class CxWrapper {
return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_ASCA);
}

async scanOss(sourceFile: string): Promise<CxCommandOutput> {
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<CxCommandOutput> {
const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.SUB_CMD_CANCEL, CxConstants.SCAN_ID, id];
commands.push(...this.initializeCommands(false));
Expand Down
5 changes: 5 additions & 0 deletions src/main/wrapper/ExecutionService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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;
Expand Down
8 changes: 8 additions & 0 deletions src/tests/ScanTest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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/package.json");
console.log("Json object from scanOSS successful case: " + JSON.stringify(cxCommandOutput));
expect(cxCommandOutput.payload).toBeDefined();
expect(cxCommandOutput.exitCode).toBe(0);
});

});
8 changes: 8 additions & 0 deletions tsc/tests/data/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "test",
"version": "0.0.1",
"description": "AST CLI Javascript wrapper tests",
"dependencies": {
"log4js": "^6.9.1"
}
}
Loading