关于依赖关系图
依赖关系图是存储在代码库中的清单文件和锁定文件以及使用依赖项提交 API 为代码库提交的任何依赖项的摘要。对于每个代码库,它显示
- 依赖项,它所依赖的生态系统和包
- 依赖者,依赖它的代码库和包
对于每个依赖项,您可以查看许可证信息和漏洞严重性。您还可以使用搜索栏搜索特定依赖项。依赖项会根据漏洞严重性自动排序。
更多信息,请参阅“关于依赖关系图”。
在本文中,您可以看到支持的生态系统。
支持的包生态系统
推荐的格式明确定义了所有直接依赖项和所有间接依赖项使用的版本。如果您使用这些格式,您的依赖关系图将更准确。它还反映当前的构建设置,并使依赖关系图能够报告直接和间接依赖项中的漏洞。从清单文件(或等效文件)推断出的间接依赖项将从不安全依赖项检查中排除。
包管理器 | 语言 | 推荐格式 | 所有支持的格式 |
---|---|---|---|
Cargo | Rust | Cargo.lock | Cargo.toml , Cargo.lock |
Composer | PHP | composer.lock | composer.json , composer.lock |
NuGet | .NET 语言 (C#、F#、VB)、C++ | .csproj , .vbproj , .nuspec , .vcxproj , .fsproj | .csproj , .vbproj , .nuspec , .vcxproj , .fsproj , packages.config |
GitHub Actions 工作流 | YAML | .yml , .yaml | .yml , .yaml |
Go 模块 | Go | go.mod | go.mod |
Maven | Java、Scala | pom.xml | pom.xml |
npm | JavaScript | package-lock.json | package-lock.json , package.json |
pip | Python | requirements.txt , pipfile.lock | requirements.txt , pipfile , pipfile.lock , setup.py |
pnpm | JavaScript | pnpm-lock.yaml | package.json , pnpm-lock.yaml |
pub | Dart | pubspec.lock | pubspec.yaml , pubspec.lock |
Python Poetry | Python | poetry.lock | poetry.lock , pyproject.toml |
RubyGems | Ruby | Gemfile.lock | Gemfile.lock , Gemfile , *.gemspec |
Swift Package Manager | Swift | Package.resolved | Package.resolved |
Yarn | JavaScript | yarn.lock | package.json , yarn.lock |
注意
- 如果您在
setup.py
文件中列出您的 Python 依赖项,我们可能无法解析和列出项目中的每个依赖项。 - GitHub Actions 工作流必须位于代码库的
.github/workflows/
目录中才能被识别为清单文件。使用语法jobs[*].steps[*].uses
或jobs.<job_id>.uses
引用的任何操作或工作流都将被解析为依赖项。更多信息,请参阅“GitHub Actions 的工作流语法”。 - Dependabot 仅会为使用语义版本控制的易受攻击的 GitHub Actions 创建 Dependabot 警报。对于使用 SHA 版本控制的易受攻击的操作,您不会收到警报。如果您使用带有 SHA 版本控制的 GitHub Actions,我们建议您为您的代码库或组织启用 Dependabot 版本更新,以使您使用的 Actions 保持更新到最新版本。更多信息,请参阅“关于 Dependabot 警报”和“关于 Dependabot 版本更新”。
对于在构建时解析传递依赖项的生态系统,我们建议配置依赖项提交以自动将这些依赖项提交到依赖项图。更多信息,请参阅“为您的代码库配置自动依赖项提交”。
通过依赖项提交操作支持的包生态系统
您可以使用依赖项提交 API 将构建时依赖项添加到依赖项图,或将您选择的包管理器和生态系统的依赖项添加到依赖项图,即使该生态系统不在上述受支持的生态系统列表中。这些提交的依赖项的依赖项信息将反过来流入 Dependabot 更新和 Dependabot 警报。
使用依赖项提交 API 提交到项目的依赖项将显示用于提交它们的检测器以及提交时间。有关依赖项提交 API 的更多信息,请参阅“使用依赖项提交 API”。
您通常在 GitHub Actions 工作流中使用依赖项提交 API 来在构建项目时提交项目的依赖项。使用依赖项提交 API 的最简单方法是向您的代码库添加预制操作,该操作将收集并将依赖项列表转换为所需的快照格式,并将列表提交到 API。您可以在下表中找到当前可用操作的链接。
生态系统 | 操作 |
---|---|
Go | Go 依赖项提交 |
Gradle | Gradle 依赖项提交 |
Maven | Maven 依赖项树依赖项提交 |
Mill | Mill 依赖项提交 |
Scala | Sbt 依赖项提交 |
NuGet 及其他 | 组件检测依赖项提交操作 |
注意
对于组件检测依赖项提交操作,其他受支持的生态系统包括 Vcpkg、Conan、Conda、Crates 以及 NuGet。
例如,以下 Go 依赖项提交 工作流计算 Go 构建目标(具有main
函数的 Go 文件)的依赖项,并将列表提交到依赖项提交 API。
name: Go Dependency Submission
on:
push:
branches:
- main
# The API requires write permission on the repository to submit dependencies
permissions:
contents: write
# Environment variables to configure Go and Go modules. Customize as necessary
env:
GOPROXY: '' # A Go Proxy server to be used
GOPRIVATE: '' # A list of modules are considered private and not requested from GOPROXY
jobs:
go-action-detection:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ">=1.18.0"
- name: Run snapshot action
uses: actions/go-dependency-submission@v1
with:
# Required: Define the repo path to the go.mod file used by the
# build target
go-mod-path: go-example/go.mod
#
# Optional. Define the repo path of a build target,
# a file with a `main()` function.
# If undefined, this action will collect all dependencies
# used by all build targets for the module. This may
# include Go dependencies used by tests and tooling.
go-build-target: go-example/cmd/octocat.go
您也可以创建自己的操作。更多信息,请参阅“使用依赖项提交 API”。