Skip to content

docs: Clarify how suppress items are matched against files#8354

Open
kwin wants to merge 1 commit intodependency-check:mainfrom
kwin:patch-2
Open

docs: Clarify how suppress items are matched against files#8354
kwin wants to merge 1 commit intodependency-check:mainfrom
kwin:patch-2

Conversation

@kwin
Copy link
Contributor

@kwin kwin commented Mar 6, 2026

This closes #8351

Description of Change

Documentation clarification

Related issues

#8351

Have test cases been added to cover the new functionality?

no

Copy link
Collaborator

@chadlwilson chadlwilson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this!


The latter three can optionally be given as regular expression. The `<packageUrl>` value is matched against the dependency
specific software identifiers (can be looked up from the report) and `<gav>` against these identifiers after they have been mapped
to coordinates via `PurlIdentifier.toGav()`. The latter is not always available while the former is mandatory.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Purls are not always available for dependencies, so it's not "mandatory", if that's what you were referring to?

Possibly also better to rephrase without using context-dependent latter/former, since it's a bit confusing given latter is also used a couple of lines above to refer to something different.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In which cases are Purls not available? So only sha1 is available for all files?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Purls have to be guessed/inferred for many analyzers as there is not always package metadata. E.g jars without POMs, arbitrary JavaScript files, dlls/assemblies, scanning inside packages or archives of one type which contain built artifacts of another vendored.within.

Especially when using the CLI/docker image to scan java projects.

Sometimes there just isn't sufficient metadata.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only hashes are always available, but it's usually a last resort for suppressing because it's obviously brittle, changes with version etc so can't be regexed.

Comment on lines +37 to 38
Additionally, there are several things that can be suppressed - individual CPEs, individual CVEs, or all CVE entries below a specified CVSS score. The most common
would be suppressing CPEs based off of SHA1 hashes or filePath (regexes) - these entries can be generated using the
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not critical, but given the above changes, we probably could rephrase this - it's pretty out of date to refer to suppressing by hash or file path as being the "most common".

The "most common" would probably be matching via purl regex, which is why we require this information when people file false positive reports - that's the most reliable way to suppress things. gav was most common pre-purl, when only Java artifacts really had a canonical designation.

@nhumblot nhumblot changed the title Clarify how suppress items are matched against files docs: Clarify how suppress items are matched against files Mar 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation site documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clarify file separator to be used in filePath suppressions

2 participants