Skip to content

Commit 24a4e19

Browse files
Refactors OSS scan parsing and renames method (AST-95414) (#834)
* Refactors OSS scan parsing and renames method * Refactors variable declarations and updates method call * Adds SCA vulnerability details and severity levels to CxOss
1 parent a368595 commit 24a4e19

File tree

4 files changed

+48
-29
lines changed

4 files changed

+48
-29
lines changed

src/main/oss/CxManifestStatus.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
export enum CxManifestStatus {
22
malicious = "Malicious",
33
ok = "OK",
4-
unknown = "Unknown"
4+
unknown = "Unknown",
5+
critical = "Critical",
6+
high = "High",
7+
medium = "Medium",
8+
low = "Low"
59
}

src/main/oss/CxOss.ts

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,60 @@
1-
import {CxManifestStatus} from './CxManifestStatus';
1+
import { CxManifestStatus } from './CxManifestStatus';
22

33
export default class CxOssResult {
4-
packageManager : string;
5-
packageName : string;
6-
version : string;
7-
filepath : string;
8-
lineStart : number;
9-
lineEnd : number;
10-
startIndex : number;
11-
endIndex : number;
12-
status :CxManifestStatus;
13-
4+
packageManager: string;
5+
packageName: string;
6+
version: string;
7+
filepath: string;
8+
lineStart: number;
9+
lineEnd: number;
10+
startIndex: number;
11+
endIndex: number;
12+
status: CxManifestStatus;
13+
vulnerabilities: { cve: string, description: string, severity: string }[];
1414

1515
static parseResult(resultObject: any): CxOssResult[] {
16+
const packages = resultObject.Packages;
1617
let ossResults: CxOssResult[] = [];
17-
if (resultObject instanceof Array) {
18-
ossResults = resultObject.map((member: any) => {
18+
if (packages instanceof Array) {
19+
ossResults = packages.map((member: any) => {
1920
const ossResult = new CxOssResult();
2021
ossResult.packageManager = member.PackageManager;
2122
ossResult.packageName = member.PackageName;
22-
ossResult.version = member.Version;
23-
ossResult.filepath = member.Filepath;
23+
ossResult.version = member.PackageVersion;
24+
ossResult.filepath = member.FilePath;
2425
ossResult.lineStart = member.LineStart;
2526
ossResult.lineEnd = member.LineEnd;
2627
ossResult.startIndex = member.StartIndex;
2728
ossResult.endIndex = member.EndIndex;
2829
ossResult.status = member.Status as CxManifestStatus;
30+
ossResult.vulnerabilities = Array.isArray(member.Vulnerabilities)
31+
? member.Vulnerabilities.map((vul: any) => ({
32+
cve: vul.CVE,
33+
description: vul.Description,
34+
severity: vul.Severity
35+
}))
36+
: [];
2937
return ossResult;
3038
});
3139
} else {
32-
const ossResult = new CxOssResult();
33-
ossResult.packageManager = resultObject.PackageManager;
34-
ossResult.packageName = resultObject.PackageName;
35-
ossResult.version = resultObject.Version;
36-
ossResult.filepath = resultObject.FilePath;
37-
ossResult.lineStart = resultObject.LineStart;
38-
ossResult.lineEnd = resultObject.LineEnd;
39-
ossResult.startIndex = resultObject.StartIndex;
40-
ossResult.endIndex = resultObject.EndIndex;
41-
ossResult.status = resultObject.Status as CxManifestStatus;
42-
ossResults.push(ossResult);
40+
const ossResult = new CxOssResult();
41+
ossResult.packageManager = packages.PackageManager;
42+
ossResult.packageName = packages.PackageName;
43+
ossResult.version = packages.PackageVersion;
44+
ossResult.filepath = packages.FilePath;
45+
ossResult.lineStart = packages.LineStart;
46+
ossResult.lineEnd = packages.LineEnd;
47+
ossResult.startIndex = packages.StartIndex;
48+
ossResult.endIndex = packages.EndIndex;
49+
ossResult.status = packages.Status as CxManifestStatus;
50+
ossResult.vulnerabilities = Array.isArray(packages.Vulnerabilities)
51+
? packages.Vulnerabilities.map((vul: any) => ({
52+
cve: vul.CVE,
53+
description: vul.Description,
54+
severity: vul.Severity
55+
}))
56+
: [];
57+
ossResults.push(ossResult);
4358
}
4459
return ossResults;
4560
}

src/main/wrapper/CxWrapper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ export class CxWrapper {
147147
return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.SCAN_ASCA);
148148
}
149149

150-
async scanOss(sourceFile: string): Promise<CxCommandOutput> {
150+
async ossScanResults(sourceFile: string): Promise<CxCommandOutput> {
151151
const commands: string[] = [CxConstants.CMD_SCAN, CxConstants.CMD_OSS, CxConstants.SOURCE, sourceFile];
152152
commands.push(...this.initializeCommands(false));
153153
const exec = new ExecutionService();

src/tests/ScanTest.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ describe("ScanCreate cases", () => {
169169

170170
it.skip('ScanOss Successful case', async () => {
171171
const wrapper = new CxWrapper(cxScanConfig);
172-
const cxCommandOutput: CxCommandOutput = await wrapper.scanOss("tsc/tests/data/package.json");
172+
const cxCommandOutput: CxCommandOutput = await wrapper.ossScanResults("tsc/tests/data/package.json");
173173
console.log("Json object from scanOSS successful case: " + JSON.stringify(cxCommandOutput));
174174
expect(cxCommandOutput.payload).toBeDefined();
175175
expect(cxCommandOutput.exitCode).toBe(0);

0 commit comments

Comments
 (0)