Skip to main content
我们经常发布文档更新,此页面的翻译可能仍在进行中。 有关最新信息,请访问英语文档

依赖关系图疑难排解

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

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

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

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

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

但是,可以使用依赖项提交 API(测试版)将依赖项添加到项目的依赖项关系图中,即使依赖项未在清单或锁定文件中声明,例如在生成项目时解析的依赖项。 依赖项关系图将显示按生态系统分组的提交依赖项,但与从清单或锁定文件解析的依赖项是分开的。 有关依赖项提交 API 的详细信息,请参阅“使用依赖项提交 API”。

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

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

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

但是,可以使用依赖项提交 API(测试版)将依赖项添加到项目的依赖项关系图中,即使仅当生成项目时才解析依赖项。 有关依赖项提交 API 的详细信息,请参阅“使用依赖项提交 API”。

检查:在清单中缺少的依赖项是否使用变量声明其名称或版本?

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

是的,依赖项图有两个限制类别:

  1. 处理限制

    这会影响 GitHub 中显示的依赖项图,还会阻止 Dependabot alerts 的创建。

    仅为企业帐户处理大小超过 0.5 MB 的清单。 对于其他帐户,将忽略超过 0.5 MB 的清单,并且不会创建 Dependabot alerts。

    默认情况下,对于每个存储库,GitHub 处理的清单数量不会超过 150 个。 对于超出此限制的清单,不会创建 Dependabot alerts。 如果您需要提高限值,请联系 GitHub 支持

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

    • (3rd|[Tt]hird)[-_]?[Pp]arty/

    • (^|/)vendors?/

    • (^|/)[Ee]xtern(als?)?/

    • (^|/)[Vv]+endor/

      示例:

    • third-party/dependencies/dependency1

    • vendors/dependency1

    • /externals/vendor1/dependency1

  2. 可视化限制

    这会影响 GitHub 中依赖项图的显示内容。 但是,它们不会影响 Dependabot alerts 的创建。

    仓库依赖项图的依赖项视图只显示 100 个清单。 通常这就足够了,因为它明显高于上述处理限制。 处理限制超过 100 的情况下,对于任何未在 GitHub 中显示的任何清单,仍会创建 Dependabot alerts。

检查:在超过 0.5 MB 的清单文件或包含大量清单的存储库中是否存在缺少的依赖项?

延伸阅读