Skip to content

Commit ab41ccf

Browse files
committed
feat: add util for scan tool, severity count and total count
1 parent f9cc382 commit ab41ccf

File tree

2 files changed

+29
-32
lines changed

2 files changed

+29
-32
lines changed

src/Shared/Components/Security/Vulnerabilities/Vulnerabilities.tsx

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@
1515
*/
1616

1717
import { useEffect } from 'react'
18-
import { EMPTY_STATE_STATUS, SCAN_TOOL_ID_CLAIR, SCAN_TOOL_ID_TRIVY } from '@Shared/constants'
19-
import { SeverityCount } from '@Shared/types'
18+
import { EMPTY_STATE_STATUS } from '@Shared/constants'
2019
import { Progressing, useAsync } from '../../../../Common'
2120
import { ScannedByToolModal } from '../../ScannedByToolModal'
2221
import { VulnerabilitiesProps } from './types'
2322
import { SecuritySummaryCard } from '../SecuritySummaryCard'
24-
import { getSeverityCountFromSummary, getTotalSeverityCount } from '../utils'
23+
import { getScanToolAndSeverityCount } from '../utils'
2524
import { getSecurityScan } from '../SecurityModal/service'
2625

2726
const Vulnerabilities = ({
@@ -83,14 +82,7 @@ const Vulnerabilities = ({
8382
)
8483
}
8584

86-
const scanToolId =
87-
scanResultResponse?.result.imageScan.vulnerability?.list[0].scanToolName === 'TRIVY'
88-
? SCAN_TOOL_ID_TRIVY
89-
: SCAN_TOOL_ID_CLAIR
90-
const scanResultSeverities = scanResultResponse?.result.imageScan.vulnerability?.summary.severities
91-
const severityCount: SeverityCount = getSeverityCountFromSummary(scanResultSeverities)
92-
93-
const totalCount = getTotalSeverityCount(severityCount)
85+
const { scanToolId, severityCount, totalCount } = getScanToolAndSeverityCount(scanResultResponse?.result)
9486

9587
if (!totalCount) {
9688
return (
Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
import { SeverityCount } from '@Shared/types'
2-
import { SeveritiesDTO } from './SecurityModal/types'
3-
4-
export const getTotalSeverityCount = (severityCount: SeverityCount): number => {
5-
const totalCount =
6-
(severityCount.critical || 0) +
7-
(severityCount.high || 0) +
8-
(severityCount.medium || 0) +
9-
(severityCount.low || 0) +
10-
(severityCount.unknown || 0)
11-
return totalCount
12-
}
13-
14-
export const getSeverityCountFromSummary = (
15-
scanResultSeverities: Partial<Record<SeveritiesDTO, number>>,
16-
): SeverityCount => ({
17-
critical: scanResultSeverities?.[SeveritiesDTO.CRITICAL] || 0,
18-
high: scanResultSeverities?.[SeveritiesDTO.HIGH] || 0,
19-
medium: scanResultSeverities?.[SeveritiesDTO.MEDIUM] || 0,
20-
low: scanResultSeverities?.[SeveritiesDTO.LOW] || 0,
21-
unknown: scanResultSeverities?.[SeveritiesDTO.UNKNOWN] || 0,
22-
})
2+
import { SCAN_TOOL_ID_CLAIR, SCAN_TOOL_ID_TRIVY } from '@Shared/constants'
3+
import { ScanResultDTO, SeveritiesDTO } from './SecurityModal/types'
234

245
export const getCVEUrlFromCVEName = (cveName: string): string =>
256
`https://cve.mitre.org/cgi-bin/cvename.cgi?name=${cveName}`
7+
8+
export const getScanToolAndSeverityCount = (
9+
scanResult: ScanResultDTO,
10+
): { scanToolId: number; severityCount: SeverityCount; totalCount: number } => {
11+
const scanToolId =
12+
scanResult.imageScan?.vulnerability?.list?.[0].scanToolName === 'TRIVY'
13+
? SCAN_TOOL_ID_TRIVY
14+
: SCAN_TOOL_ID_CLAIR
15+
16+
const severities = scanResult.imageScan?.vulnerability?.summary?.severities
17+
18+
const severityCount: SeverityCount = {
19+
critical: severities?.[SeveritiesDTO.CRITICAL] || 0,
20+
high: severities?.[SeveritiesDTO.HIGH] || 0,
21+
medium: severities?.[SeveritiesDTO.MEDIUM] || 0,
22+
low: severities?.[SeveritiesDTO.LOW] || 0,
23+
unknown: severities?.[SeveritiesDTO.UNKNOWN] || 0,
24+
}
25+
26+
const totalCount =
27+
severityCount.critical + severityCount.high + severityCount.medium + severityCount.low + severityCount.unknown
28+
29+
return { scanToolId, severityCount, totalCount }
30+
}

0 commit comments

Comments
 (0)