Checks

The six analyses a scan can run, which are on by default, and how to change them.

5 sections2 min read

A scan runs a set of checks. Each one looks for a different kind of problem and produces findings in its own category. Which ones run is per repository and is yours to set.

The six checks

CheckWhat it looks forCategory it producesDefault
sastVulnerabilities in code you wrote, traced from untrusted input to a dangerous operationcodeOn
scaKnown vulnerabilities in the packages your manifests and lockfiles declaredependencyOn
secretsCredentials, keys, and tokens committed into the repositorysecretOn
iacUnsafe settings in infrastructure and configuration filesmisconfigOn
qualityCode smells and complexity that are not vulnerabilities but make them likeliercodeOff
sbomA full component inventory, exportable as CycloneDX or SPDXnoneOff

Presets

Three presets expand to sets of checks, so you do not have to name them individually.

PresetExpands to
essentialssast, sca, secrets
balancedsast, sca, secrets, iac, quality
everythingsast, sca, secrets, iac, quality, sbom

Changing them

From the CLIbash
cf settings
cf settings checks sast,sca,secrets
cf settings checks balanced
cf settings checks sbom --add
cf settings checks quality --remove

--add and --remove change one check without restating the rest. With neither, the list you give replaces the current set.

Checks that cannot run on a repository scan

One more check is named in the product but cannot run against a repository, so setting it is refused rather than silently accepted. runtime needs an agent inside a running workload, which is not something a scan of committed code can provide.

Which ecosystems the dependency check understands

EcosystemRead from
npmpackage.json, package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml
PyPIrequirements.txt, pyproject.toml, Pipfile.lock, poetry.lock
Gogo.mod
crates.ioCargo.toml, Cargo.lock
Packagistcomposer.json, composer.lock
RubyGemsGemfile, Gemfile.lock

Lockfiles give the resolved versions, which is what a vulnerability lookup needs. A repository with a manifest but no lockfile still gets a dependency check, based on the declared ranges, and is correspondingly less precise.

Have a correction or need help?

Email the docs team