Skip to content

Dependency Scanning

Dependency scanning identifies the open-source and third-party packages your repositories rely on, then checks them against known vulnerability databases and license risk criteria. Every time a code scan runs, Fencer catalogs each package — its version, license, ecosystem, and position in your dependency tree — so you can spot outdated, vulnerable, or legally risky components at a glance.

This capability is central to software supply chain security: you cannot fix what you cannot see, and transitive dependencies often carry more risk than direct ones.

  • A plan that includes dependency scanning.
  • At least one source code integration connected (GitHub, GitLab, Bitbucket, Azure DevOps, Cursor Origin, or a generic Git repository).
  • Repositories imported and scanned via Code Scanning.

During a code scan, Fencer catalogs every package in your repository, with its version, license, and relationship in the dependency tree, and checks each one for known CVEs.

Each discovered package is recorded as a Package with a unique Package URL (PURL). A Dependency links that Package to a specific repository and file path, tracking when it was first seen and whether it is a root, direct, or transitive dependency. The dependency inventory follows each repository’s default branch: packages that appear only on other branches are not listed. When a dependency disappears from a later scan of the default branch, Fencer marks it as removed rather than deleting it, preserving your audit trail, and it no longer appears in the list.

  1. Go to Posture > Dependencies. To see one repository’s dependencies, open the repository on Posture > Code and select its Dependencies tab.
  2. The All tab lists every current dependency across your scanned repositories, with its package name, current and latest version, visibility, location, ecosystem, repository, license, license category, risk, and when it was first seen.
  3. The Grouped tab groups dependencies by Package or by Location (use the Group by toggle).
  4. Click any row to open the dependency details, which show the package information and the dependency graph.

Use the advanced filter bar to narrow results by any combination of:

FilterDescription
RepositoryThe repository asset containing the dependency
PackageA specific package by name
EcosystemThe package type reported for the dependency (for example npm, python, or go-module)
LanguageProgramming language — Python, JavaScript, Ruby, PHP, Java, C, C++, C#, Dotnet, Go, Rust, Scala, Kotlin, Swift, Dart, TypeScript, or Other
LicenseThe SPDX license identifier
License CategoryRisk grouping — Unknown, Permissive, Weak Copyleft, Strong Copyleft, Commercial, Proprietary, or Other
VisibilityPublic or Private
Dependency TypeRoot, Direct, Transitive, or Unknown
RevokedWhether the package has been revoked from its registry
End of lifeWhether the package version has reached end of life or will within 30 days
Support endedWhether support for the package version has ended
First SeenDate the dependency was first detected

You can also use the free-text search to match on package name, version, file path, repository name, or license.

The dependency details show:

  • Package Information — the package ID (PURL), the source link for public packages, type, ecosystem, visibility, and when it was first and last seen.
  • Dependency Graph — a reverse dependency tree showing which packages depend on this one. Click a package in the tree to highlight its path, so you can trace the route from your direct dependencies down to a transitive package.
  • Asset Information — the repository, branch, and file location where the dependency was found.
  • License Information — the license, its category, and a description of the license risk.

Fencer can generate a Software Bill of Materials for any scanned repository in industry-standard formats:

  1. On the Dependencies page, click Download SBOM.
  2. Select the Repository and choose a Format — CycloneDX or SPDX.
  3. Click Download. The SBOM is taken from the repository’s most recent finished scan of its default branch and downloads as a JSON file.

You can configure code scans to fail based on dependency criteria. Open the repository’s Settings tab and go to Checks:

  • Fail on EOL — fails the scan if a package will soon be end-of-life.
  • Fail on license risk — fails when an added package carries a risky license (Strong Copyleft, Any Copyleft license, Any Commercial or Copyleft license, or Any non-proprietary license).

See Code Scanning — Scan Configuration for the full list of failure conditions.

  1. Open the Dependencies page.
  2. Add a filter: License Category is Strong Copyleft.
  3. Review the results to identify any GPL or AGPL-licensed packages that may conflict with your project’s licensing terms.

When a vulnerability is reported against a transitive dependency:

  1. Search for the package name in the Dependencies page.
  2. Open the dependency details.
  3. Use the Dependency Graph to identify which direct dependency pulls it in.
  4. Decide whether to update the direct dependency, pin a patched version, or ignore the vulnerability.
  • No dependencies shown — Verify that your repositories have completed at least one successful code scan of their default branch. Dependencies are only populated after a scan finishes.
  • SBOM download unavailable — The selected repository needs a finished scan of its default branch. Run a scan if the repository was imported after the last scan cycle.
  • Dependency still listed after removal — Removed dependencies drop out of the list after the next finished scan of the default branch. Removing a package on another branch doesn’t change the list until that change reaches the default branch.
  • License shown as “Unknown” — Some packages do not declare a machine-readable license. Fencer enriches license data when possible, but manual review may be needed for packages with non-standard license declarations.