Skip to content

Commit 42c4eba

Browse files
authored
Improve Containers findings card (AST-102812) (#1222)
* Fix container scanner button alignment in markdown output * Enhance container scanner output with image icons and status rendering * Refactor container scanner imports to streamline hover data usage * Adjust container scanner hover output to conditionally display vulnerability counts
1 parent fc71346 commit 42c4eba

File tree

2 files changed

+32
-23
lines changed

2 files changed

+32
-23
lines changed

src/realtimeScanners/scanners/containers/containersScannerCommand.ts

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { ConfigurationManager } from "../../configuration/configurationManager";
77
import { constants } from "../../../utils/common/constants";
88
import { CxRealtimeEngineStatus } from "@checkmarxdev/ast-cli-javascript-wrapper/dist/main/oss/CxRealtimeEngineStatus";
99
import { buildCommandButtons, renderCxAiBadge } from "../../../utils/utils";
10-
import { ContainersHoverData } from "../../common/types";
10+
import {ContainersHoverData} from "../../common/types";
1111

1212
export class ContainersScannerCommand extends BaseScannerCommand {
1313
constructor(
@@ -74,24 +74,37 @@ export class ContainersScannerCommand extends BaseScannerCommand {
7474
const isVulnerable = this.isVulnerableStatus(hoverData.status);
7575
const isMalicious = hoverData.status === "Malicious";
7676

77+
md.appendMarkdown(renderCxAiBadge() + "<br>");
78+
if (isVulnerable) {
79+
md.appendMarkdown(this.renderImageIcon());
80+
}
7781
if (isMalicious) {
78-
md.appendMarkdown(this.renderMaliciousFinding() + "<br>");
79-
md.appendMarkdown(renderCxAiBadge() + "<br>");
80-
} else if (isVulnerable) {
81-
md.appendMarkdown(renderCxAiBadge() + "<br>");
82+
md.appendMarkdown(this.renderMaliciousIcon());
8283
}
83-
84-
md.appendMarkdown(`${"&nbsp;".repeat(45)}${buttons}<br>`);
85-
84+
md.appendMarkdown(this.renderID(hoverData));
8685
if (isVulnerable) {
8786
md.appendMarkdown(this.renderVulnCounts(hoverData.vulnerabilities || []));
8887
}
88+
md.appendMarkdown(`${buttons}<br>`);
8989

90-
if (isMalicious) {
91-
md.appendMarkdown(this.renderMaliciousIcon());
90+
return new vscode.Hover(md);
91+
}
92+
93+
private renderID(hoverData: ContainersHoverData): string {
94+
if (hoverData.status == CxRealtimeEngineStatus.malicious) {
95+
return `
96+
<b>${hoverData.imageName}:${hoverData.imageTag}</b>
97+
<i style="color: dimgrey;"> - ${hoverData.status} image <br></i>
98+
`;
9299
}
100+
return `
101+
<b>${hoverData.imageName}:${hoverData.imageTag}</b>
102+
<i style="color: dimgrey;"> - ${hoverData.status} severity image <br></i>
103+
`;
104+
}
93105

94-
return new vscode.Hover(md);
106+
private renderImageIcon() : string {
107+
return `<img src="https://raw.githubusercontent.com/Checkmarx/ast-vscode-extension/main/media/icons/realtimeEngines/container_image.png" width="15" height="16" style="vertical-align: -12px;"/>`;
95108
}
96109

97110
private isVulnerableStatus(status: string): boolean {
@@ -103,12 +116,8 @@ export class ContainersScannerCommand extends BaseScannerCommand {
103116
].includes(status as any);
104117
}
105118

106-
private renderMaliciousFinding(): string {
107-
return `<img src="https://raw.githubusercontent.com/Checkmarx/ast-vscode-extension/main/media/icons/maliciousFindig.png" style="vertical-align: -12px;" />`;
108-
}
109-
110119
private renderMaliciousIcon(): string {
111-
return `<img src="https://raw.githubusercontent.com/Checkmarx/ast-vscode-extension/main/media/icons/malicious.png" width="10" height="11" style="vertical-align: -12px;"/>`;
120+
return `<img src="https://raw.githubusercontent.com/Checkmarx/ast-vscode-extension/main/media/icons/malicious.png" width="15" height="16" style="vertical-align: -12px;"/>`;
112121
}
113122

114123
private renderVulnCounts(vulnerabilities: Array<{ severity: string }>): string {
@@ -124,7 +133,7 @@ export class ContainersScannerCommand extends BaseScannerCommand {
124133
.filter(([_, count]) => count > 0)
125134
.map(
126135
([sev, count]) =>
127-
`<img src="https://raw.githubusercontent.com/Checkmarx/ast-vscode-extension/main/media/icons/${constants.ossIcons[sev as keyof typeof constants.ossIcons]
136+
`<img src="https://raw.githubusercontent.com/Checkmarx/ast-vscode-extension/main/media/icons/realtimeEngines/${constants.ossIcons[sev as keyof typeof constants.ossIcons]
128137
}" width="10" height="11" style="vertical-align: -12px;"/> ${count} &nbsp; `
129138
);
130139

src/realtimeScanners/scanners/containers/containersScannerService.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ export class ContainersScannerService extends BaseScannerService {
3636

3737
private decorationTypes = {
3838
malicious: this.createDecoration("malicious.svg"),
39-
ok: this.createDecoration("circle-check.svg"),
40-
unknown: this.createDecoration("question-mark.svg"),
41-
critical: this.createDecoration("critical_untoggle.svg", "12px"),
42-
high: this.createDecoration("high_untoggle.svg"),
43-
medium: this.createDecoration("medium_untoggle.svg"),
44-
low: this.createDecoration("low_untoggle.svg"),
39+
ok: this.createDecoration("realtimeEngines/green_check.svg"),
40+
unknown: this.createDecoration("realtimeEngines/question_mark.svg"),
41+
critical: this.createDecoration("realtimeEngines/critical_severity.svg", "12px"),
42+
high: this.createDecoration("realtimeEngines/high_severity.svg"),
43+
medium: this.createDecoration("realtimeEngines/medium_severity.svg"),
44+
low: this.createDecoration("realtimeEngines/low_severity.svg"),
4545
underline: vscode.window.createTextEditorDecorationType({
4646
textDecoration: "underline wavy #f14c4c",
4747
rangeBehavior: vscode.DecorationRangeBehavior.ClosedClosed,

0 commit comments

Comments
 (0)