Skip to main content

依赖关系图疑难排解

如果依赖项关系图报告的依赖项信息不符合你的预期,则需要考虑许多因素,你可以检查各种问题。

谁可以使用此功能?

依赖项关系图适用于所有存储库。

GitHub 报告的依赖项检测结果可能不同于其他工具返回的结果。 这是有原因的,它有助于了解 GitHub 如何确定项目的依赖项。

依赖项图是否只查找清单和锁文件中的依赖项?

依赖项关系图自动包含在环境中明确声明的依赖项的信息。 也就是说,在清单或锁定文件中指定的依赖项。 依赖项图通常还包括过渡依赖项,即使它们没有在锁定文件中指定,也可以通过查看清单文件中的依赖项来实现。

依赖项关系图不自动包含“松散”依赖项。 “宽松”依赖项是指从另一个来源复制并直接或在存档文件(例如 ZIP 或 JAR 文件)中检入仓库的单个文件,而不是在包管理器的清单或锁定文件中引用的文件。

但是,可以使用 依赖项提交 API 将依赖项添加到项目的依赖项关系图,即使依赖项未在清单或锁定文件中声明,例如在生成项目时解析的依赖项。 使用 依赖项提交 API 提交到项目的依赖项将显示用于提交的检测器以及提交时间。 有关详细信息 依赖项提交 API,请参阅 使用依赖项提交 API

          **检查:** 缺失的依赖项是否属于未在存储库的清单或锁定文件中指定的组件?

依赖项图是否检测使用变量指定的依赖项?

依赖关系图分析清单,因为清单正被推送到 GitHub。 因此,依赖项图无法访问项目的构建环境,从而无法解析清单中使用的变量。 如果在清单中使用变量指定名称,或指定依赖项的版本(更常见),则该依赖项不会自动包含在依赖项关系图中。

但是,你可以使用 依赖项提交 API 向项目的依赖关系图添加依赖项,即使这些依赖项仅在生成项目时才能解析。 有关 依赖项提交 API 的详细信息,请参阅“使用依赖项提交 API”。

          **检查:** 缺失的依赖项是否在清单中通过变量指定其名称或版本?

是否存在影响依赖项图数据的限制?

是,依赖项关系图在它将处理的清单文件大小、数量和位置方面设有限制。

处理限制会影响显示在其中的 GitHub 依赖项关系图,并阻止 Dependabot alerts 创建。

将忽略大小超过 10 MB 的清单,并且不会生成 Dependabot alerts。

默认情况下, GitHub 每个存储库不会处理超过 600 个清单。 Dependabot 不会为超过此限制的清单生成 Dependabot alerts ,如果超出此限制, Dependabot alerts 的行为可能会不可预知。

如果清单文件存储在其名称通常用于所提供的依赖项的目录中,则不会处理这些文件。 名称与以下正则表达式匹配的目录被视为提供的依赖项目录:

  • (3rd|[Tt]hird)[-_]?[Pp]arty/
  • (^|/)vendors?/
  • (^|/)[Ee]xtern(als?)?/
  • (^|/)[Vv]+endor/

示例:

  • third-party/dependencies/dependency1
  • vendors/dependency1
  • /externals/vendor1/dependency1

你的依赖项看起来不正确,我该怎么办?

如果项目的依赖项表无法准确表示存储库的清单,你可以触发其依赖项关系图的重新生成。

在存储库的 Dependabot 选项卡中,单击 警报列表顶部。 从下拉菜单中选择“ 刷新 Dependabot alerts ”。 这会将后台任务排队来处理存储库的清单、检测任何新的或已更改的依赖项,并更新警报。

注意

需要具有管理安全警报的权限才能刷新存储库的依赖项关系图。 有关配置此访问权限的详细信息,请参阅 管理存储库的安全和分析设置。 为了进一步降低滥用的可能性,每个存储库每小时只能触发一次 “刷新Dependabot alerts”功能。

单击“ 刷新 Dependabot alerts ”将仅扫描清单文件。 如果依赖项图还包含通过 依赖项提交 API 提交的构建时依赖项信息,则重新运行生成和提交依赖项信息的操作或外部进程也会触发存储库依赖项图的重新构建。 有关 依赖项提交 API 的详细信息,请参阅 使用依赖项提交 API

如果使用自动依赖项提交,推送更新存储库清单文件的提交将触发自动提交操作运行。

在所有情况下,警报列表顶部的时间戳表示上次生成依赖项关系图的时间。

延伸阅读

  •         [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph)
    
  •         [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository)
    
  •         [AUTOTITLE](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies)
    
  •         [AUTOTITLE](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-dependabot-errors)