GitHub 报告的依赖项检测结果可能与其他工具返回的结果不同。这是有原因的,了解 GitHub 如何确定项目的依赖项非常有帮助。
依赖关系图是否只查找清单和锁文件中的依赖项?
依赖关系图会自动包含在您的环境中明确声明的依赖项信息。也就是说,在清单或锁文件中指定的依赖项。依赖关系图通常还包括传递依赖项,即使它们未在锁文件中指定,也会通过查看清单文件中依赖项的依赖项来查找。
依赖关系图不会自动包含“松散”依赖项。“松散”依赖项是从另一个来源复制并直接或在存档(例如 ZIP 或 JAR 文件)中检入存储库的单个文件,而不是由包管理器的清单或锁文件引用。
但是,您可以使用依赖项提交 API 将依赖项添加到项目的依赖关系图中,即使这些依赖项未在清单或锁文件中声明,例如项目构建时解析的依赖项。使用依赖项提交 API 提交到项目的依赖项将显示使用哪个检测器进行提交以及何时提交。有关依赖项提交 API 的更多信息,请参阅“使用依赖项提交 API”。
检查:缺少的依赖项是否针对存储库的清单或锁文件中未指定的组件?
依赖关系图是否检测使用变量指定的依赖项?
依赖关系图会分析推送到 GitHub 的清单。因此,依赖关系图无法访问项目的构建环境,因此无法解析清单中使用的变量。如果在清单中使用变量来指定依赖项的名称或更常见的版本,则该依赖项不会自动包含在依赖关系图中。
但是,您可以使用依赖项提交 API 将依赖项添加到项目的依赖关系图中,即使这些依赖项仅在项目构建时才解析。有关依赖项提交 API 的更多信息,请参阅“使用依赖项提交 API”。
检查:缺少的依赖项是否在清单中使用变量来声明其名称或版本?
是否有影响依赖关系图数据的限制?
是的,依赖关系图有一类限制
-
处理限制
这些会影响在 GitHub 中显示的依赖关系图,还会阻止创建 Dependabot 警报。
大小超过 0.5 MB 的清单仅对企业帐户进行处理。对于其他帐户,超过 0.5 MB 的清单将被忽略,并且不会创建 Dependabot 警报。
默认情况下,GitHub 每个存储库不会处理超过 150 个清单。超过此限制的清单不会创建 Dependabot 警报,如果超过此限制,Dependabot 警报的行为可能会不可预测。
存储在通常用于供应商依赖项的目录中的清单文件将不会被处理。名称与以下正则表达式匹配的目录被视为供应商依赖项目录
(3rd|[Tt]hird)[-_]?[Pp]arty/
/(^|/)vendors?/
/(^|/)[Ee]xtern(als?)?/
/(^|/)[Vv]+endor/
示例
- third-party/dependencies/dependency1
- vendors/dependency1
- /externals/vendor1/dependency1