Skip to content

Commit c8c33a7

Browse files
barslevjdalton
authored andcommitted
Add option --reach-min-severity to only run reachability analysis on vulnerabilities with at least that severity
1 parent 514654f commit c8c33a7

File tree

4 files changed

+32
-0
lines changed

4 files changed

+32
-0
lines changed

packages/cli/src/commands/scan/cmd-scan-create.mts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ async function run(
243243
reachAnalysisMemoryLimit,
244244
reachAnalysisTimeout,
245245
reachDisableAnalytics,
246+
reachMinSeverity,
246247
reachSkipCache,
247248
readOnly,
248249
reportLevel,
@@ -268,6 +269,7 @@ async function run(
268269
reachAnalysisTimeout: number
269270
reachAnalysisMemoryLimit: number
270271
reachDisableAnalytics: boolean
272+
reachMinSeverity: string
271273
reachSkipCache: boolean
272274
}
273275

@@ -284,6 +286,14 @@ async function run(
284286
reachEcosystems.push(ecosystem as PURL_Type)
285287
}
286288

289+
// Validate severity value if provided.
290+
const validSeverities = ['info', 'low', 'moderate', 'high', 'critical']
291+
if (reachMinSeverity && !validSeverities.includes(reachMinSeverity.toLowerCase())) {
292+
throw new Error(
293+
`Invalid severity: "${reachMinSeverity}". Valid values are: ${joinAnd(validSeverities)}`,
294+
)
295+
}
296+
287297
const dryRun = !!cli.flags['dryRun']
288298

289299
let {
@@ -572,6 +582,7 @@ async function run(
572582
reachAnalysisMemoryLimit: Number(reachAnalysisMemoryLimit),
573583
reachEcosystems,
574584
reachExcludePaths,
585+
reachMinSeverity,
575586
reachSkipCache: Boolean(reachSkipCache),
576587
},
577588
readOnly: Boolean(readOnly),

packages/cli/src/commands/scan/cmd-scan-reach.mts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ async function run(
125125
reachAnalysisMemoryLimit,
126126
reachAnalysisTimeout,
127127
reachDisableAnalytics,
128+
reachMinSeverity,
128129
reachSkipCache,
129130
} = cli.flags as unknown as {
130131
cwd: string
@@ -136,6 +137,7 @@ async function run(
136137
reachAnalysisTimeout: number
137138
reachAnalysisMemoryLimit: number
138139
reachDisableAnalytics: boolean
140+
reachMinSeverity: string
139141
reachSkipCache: boolean
140142
}
141143

@@ -157,6 +159,14 @@ async function run(
157159
reachEcosystems.push(ecosystem as PURL_Type)
158160
}
159161

162+
// Validate severity value if provided.
163+
const validSeverities = ['info', 'low', 'moderate', 'high', 'critical']
164+
if (reachMinSeverity && !validSeverities.includes(reachMinSeverity.toLowerCase())) {
165+
throw new Error(
166+
`Invalid severity: "${reachMinSeverity}". Valid values are: ${joinAnd(validSeverities)}`,
167+
)
168+
}
169+
160170
const processCwd = process.cwd()
161171
const cwd =
162172
cwdOverride && cwdOverride !== '.' && cwdOverride !== processCwd
@@ -265,6 +275,7 @@ async function run(
265275
reachDisableAnalytics: Boolean(reachDisableAnalytics),
266276
reachEcosystems,
267277
reachExcludePaths,
278+
reachMinSeverity,
268279
reachSkipCache: Boolean(reachSkipCache),
269280
},
270281
targets,

packages/cli/src/commands/scan/perform-reachability-analysis.mts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export type ReachabilityOptions = {
2323
reachDisableAnalytics: boolean
2424
reachEcosystems: PURL_Type[]
2525
reachExcludePaths: string[]
26+
reachMinSeverity: string
2627
reachSkipCache: boolean
2728
}
2829

@@ -173,6 +174,9 @@ export async function performReachabilityAnalysis(
173174
...(reachabilityOptions.reachExcludePaths.length
174175
? ['--exclude-dirs', ...reachabilityOptions.reachExcludePaths]
175176
: []),
177+
...(reachabilityOptions.reachMinSeverity
178+
? ['--min-severity', reachabilityOptions.reachMinSeverity]
179+
: []),
176180
...(reachabilityOptions.reachSkipCache ? ['--skip-cache-usage'] : []),
177181
]
178182

packages/cli/src/commands/scan/reachability-flags.mts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ export const reachabilityFlags: MeowFlags = {
3131
description:
3232
'List of paths to exclude from reachability analysis, as either a comma separated value or as multiple flags.',
3333
},
34+
reachMinSeverity: {
35+
type: 'string',
36+
default: '',
37+
description:
38+
'Set the minimum severity of vulnerabilities to analyze. Supported severities are info, low, moderate, high and critical.',
39+
},
3440
reachSkipCache: {
3541
type: 'boolean',
3642
default: false,

0 commit comments

Comments
 (0)