支持的包生态系统

对于所有受支持的包生态系统,依赖项扫描同时支持直接依赖项和传递依赖项。 依赖项扫描无法检测存储库中的供应商依赖项。

由于检测如何运行依赖项扫描,请确保生成管道中有包还原步骤,以便确定正确的包版本,否则结果可能缺失或不完整。

生态系统和版本

程序包管理器 语言 支持的格式 支持的版本
Cargo Rust Cargo.toml, Cargo.lock v1
CocoaPods Swift Podfile.lock 不适用
Go 模块 Go go.mod, go.sum 不适用
Gradle Java *.lockfile 不适用
Maven Java pom.xml 不适用
npm JavaScript package-lock.json、、package.jsonnpm-shrinkwrap.json、、lerna.json v6、v7 和 lockfile <= v3
NuGet C# *.packages.config*.project.assets、、 *.csproj 不适用
pip Python setup.py, requirements.txt 不适用
pnpm JavaScript package.json v7、v8
RubyGems Ruby Gemfile.lock 不适用
Yarn JavaScript package.json v1、v2

Cargo

如果使用 Cargo v1.77 或更高版本安装的 cli, cargo metadata 则更准确。

Go 模块

如果使用 Go v1.17 或更高版本, go.mod 则直接使用,以及 go cli 代理上是否存在。 否则, go.sum 将扫描该文件。

Maven

检测要求 maven 在代理上安装 CLI。

npm

依赖项扫描会检测任何根 package.json 文件,但在生成时不解析特定包版本,即使未对依赖项进行 package.json 语义化版本控制也是如此。

NuGet

如果没有包还原,依赖项扫描也不会解析任何特定的包版本,即使未对依赖项 *.csproj 进行语义化版本控制。

pip

使用 pip v22.2.0 或更高版本启用 pip report 扫描,从而提供更准确的检测。

环境变量 PIP_INDEX_URL 用于确定应用于 pip install --report detection哪个包源。 除非全局配置 pip 默认值,否则默认值使用 PyPi 索引。