关于依赖关系图
依赖关系图是存储在代码库中的清单文件和锁文件以及使用依赖项提交 API 提交的任何依赖项的摘要。对于每个代码库,它都会显示
- 依赖项:它所依赖的生态系统和包
- 依赖者:依赖于它或其发布的包的代码库和包
对于每个依赖项,您可以查看许可证信息和漏洞严重性。您还可以使用搜索栏搜索特定依赖项。依赖项会根据漏洞严重性自动排序。
当您向 GitHub 推送更改或添加受支持的清单文件或锁文件到默认分支的提交时,依赖关系图会自动更新。此外,当任何人在您的某个依赖项的代码库中推送更改时,该图也会更新。
有关受支持的生态系统和清单文件的更多信息,请参阅“依赖关系图支持的包生态系统”。
此外,您可以使用依赖项提交 API 从您选择的包管理器或生态系统提交依赖项,即使该生态系统不受依赖关系图的清单文件或锁文件分析支持。使用依赖项提交 API 提交到项目的依赖项将显示用于提交的检测器以及提交时间。有关依赖项提交 API 的更多信息,请参阅“使用依赖项提交 API”。
当您创建一个包含对目标默认分支的依赖项更改的拉取请求时,GitHub 会使用依赖关系图向拉取请求添加依赖项审查。这些审查会指示依赖项是否包含漏洞,如果包含,则会指示在哪个依赖项版本中修复了该漏洞。有关更多信息,请参阅“关于依赖项审查”。
如果您至少具有对代码库的读取访问权限,则可以通过 GitHub UI 或 GitHub REST API 将代码库的依赖关系图导出为 SPDX 兼容的软件物料清单 (SBOM)。有关更多信息,请参阅“导出代码库的软件物料清单”。
依赖关系图可用性
依赖关系图会自动为所有公共代码库生成。您可以选择为分支和私有代码库启用它。有关更多信息,请参阅“管理代码库的安全性和分析设置”。
代码库管理员还可以为私有代码库设置依赖关系图。有关更多信息,请参阅“配置依赖关系图”。
包含的依赖项
依赖关系图包括代码库的所有依赖项,这些依赖项在受支持的生态系统的清单文件和锁文件(或其等效文件)中详细说明,以及使用依赖项提交 API 提交的任何依赖项。这包括
- 直接依赖项:在清单文件或锁文件中明确定义或已使用依赖项提交 API 提交的依赖项
- 这些直接依赖项的间接依赖项,也称为传递依赖项或子依赖项
只有在锁文件中定义或已使用依赖项提交 API 提交时,依赖关系图才会识别间接依赖项。为了获得最可靠的图,您应该使用锁文件(或其等效文件),因为它们准确定义了您当前使用的直接和间接依赖项的版本。如果您使用锁文件,您还可以确保代码库的所有贡献者都使用相同的版本,这将使您更容易测试和调试代码。如果您的生态系统没有锁文件,您可以使用预制操作来解决许多生态系统的传递依赖关系。有关更多信息,请参阅“使用依赖项提交 API”。
有关 GitHub 如何帮助您了解环境中依赖项的更多信息,请参阅“关于供应链安全”。
包含的依赖者
对于公共代码库,只会报告依赖于它或它发布的包的公共代码库。私有代码库不会报告此信息。
使用依赖关系图
您可以使用依赖关系图来
- 探索您的代码依赖的代码库,以及依赖于您的代码的代码库。更多信息,请参阅“探索代码库的依赖关系”。
- 查看和更新您代码库中存在漏洞的依赖项。更多信息,请参阅“关于 Dependabot 警报”。
- 查看拉取请求中关于存在漏洞的依赖项的信息。更多信息,请参阅“查看拉取请求中的依赖项更改”。
进一步阅读
- 维基百科上的“依赖关系图”
- “探索代码库的依赖关系”
- “查看和更新 Dependabot 警报”
- “对漏洞依赖项检测进行故障排除”