

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 编程语言依赖关系集合
<a name="sbom-generator-dependency-collection"></a>

 Amazon Inspector SBOM 生成器支持不同的编程语言和框架，它们构成了强大而详细的依赖关系集合。生成 SBOM 可以帮助您了解软件的构成，从而可识别漏洞并保持与安全标准的合规性。Amazon Inspector SBOM 生成器支持以下编程语言和文件格式。

## Go 依赖关系扫描
<a name="w2aac37c25b5"></a>


| 编程语言 | 软件包管理器 | 支持的构件 | 工具链支持 | 开发依赖关系 | 传递依赖关系 | 私有标记 | 以递归方式 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Go | Go | `go.mod`<br />`go.sum`<br />`Go Binaries`<br />`GOMODCACHE` | 不适用<br />不适用<br />是<br />不适用 | 不适用<br />不适用<br />不适用<br />不适用 | 不适用<br />不适用<br />不适用<br />不适用 | 不适用<br />不适用<br />不适用<br />不适用 | 支持<br />是<br />是<br />否 | 

### go.mod/go.sum
<a name="w2aac37c25b5b5"></a>

 使用 `go.mod` 和 `go.sum` 文件来定义和锁定 Go 项目中的依赖关系。Amazon Inspector SBOM 生成器会根据 Go 工具链版本以不同方式管理这些文件。

**主要功能**
+  从 `go.mod` 收集依赖关系（如果 Go 工具链版本为 1.17 或更高版本） 
+  从 `go.sum` 收集依赖关系（如果 Go 工具链版本为 1.17 或更低版本） 
+  解析 `go.mod` 以识别所有已声明的依赖关系和依赖关系版本 

**示例 `go.mod` 文件**  
 以下是 `go.mod` 文件的示例。

```
module example.com/project

go 1.17

require (
github.com/gin-gonic/gin v1.7.2
golang.org/x/crypto v0.0.0-20210616213533-5cf6c0f8e123
)
```

**示例 `go.sum` 文件**  
 以下是 `go.sum` 文件的示例。

```
github.com/gin-gonic/gin v1.7.2 h1:VZ7DdRl0sghbA6lVGSkX+UXO2+J0aH7RbsNugG+FA8Q=
github.com/gin-gonic/gin v1.7.2/go.mod h1:ILZ1Ngh2f1pL1ASUj7gGk8lGFeNC8cRTaN2ZhsBNbXU=
golang.org/x/crypto v0.0.0-20210616213533-5cf6c0f8e123 h1:b6rCu+qHze+BUsmC3CZzH8aNu8LzPZTVsNTo64OypSc=
golang.org/x/crypto v0.0.0-20210616213533-5cf6c0f8e123/go.mod h1:K5Dkpb0Q4ewZW/EzWlQphgJcUMBCzoWrLfDOVzpTGVQ=
```

**注意**  
 这些文件中的每一个都会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### Go 二进制文件
<a name="w2aac37c25b5b7"></a>

 Amazon Inspector SBOM 生成器从已编译的 Go 二进制文件中提取依赖关系，以提供关于使用中代码的保障。

**注意**  
 Amazon Inspector SBOM 生成器支持从使用官方 Go 编译器构建的 Go 二进制文件中捕获和评估工具链版本。有关更多信息，请参阅 Go 网站上的[下载并安装](https://go.dev/doc/install)。如果您使用来自其他供应商（例如 Red Hat）的 Go 工具链，由于分发和元数据可用性可能存在差异，因此评估结果可能不准确。

**主要功能**
+  直接从 Go 二进制文件中提取依赖关系信息 
+  收集二进制文件中嵌入的依赖关系 
+  检测并提取用于编译二进制文件的 Go 工具链版本。

### GOMODCACHE
<a name="w2aac37c25b5b9"></a>

 Amazon Inspector SBOM 生成器会扫描 Go 模块缓存，以收集有关已安装依赖关系的信息。此缓存会存储下载的模块，以确保在不同的构建中使用相同的版本。

**主要功能**
+  扫描 `GOMODCACHE` 目录以识别缓存的模块 
+  提取详细的元数据，包括模块名称、版本和源 URLs 

**示例结构**  
 以下是 `GOMODCACHE` 结构的示例。

```
~/go/pkg/mod/
├── github.com/gin-gonic/gin@v1.7.2
├── golang.org/x/crypto@v0.0.0-20210616213533-5cf6c0f8e123
```

**注意**  
 此结构会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

## Java 依赖关系扫描
<a name="w2aac37c25b7"></a>


| 编程语言 | 软件包管理器 | 支持的构件 | 工具链支持 | 开发依赖关系 | 传递依赖关系 | 私有标记 | 以递归方式 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Java | Maven | 已编译的 Java 应用程序（.jar/.war/.ear）<br />`pom.xml` | 不适用<br />不适用 | 不适用<br />不适用 | 支持<br />是 | 不适用<br />不适用 | 支持<br />是 | 

**注意**  
 我们的漏洞评估功能仅支持 Maven Central 存储库。当前不支持第三方存储库，例如 JBoss Enterprise Maven Repository。

 Amazon Inspector SBOM 生成器通过分析已编译的 Java 应用程序和 `pom.xml` 文件来执行 Java 依赖关系扫描。在扫描已编译的应用程序时，扫描器会生成 SHA–1 哈希以进行完整性验证，提取嵌入的 `pom.properties` 文件，并解析嵌套的 `pom.xml` 文件。

### SHA–1 哈希集合（适用于已编译的 .jar、.war、.ear 文件）
<a name="w2aac37c25b7b9"></a>

 Amazon Inspector SBOM 生成器会尝试收集项目中所有 `.ear`、`.jar` 和 `.war` 文件的 SHA–1 哈希，以保证已编译的 Java 构件的完整性和可追溯性。

**主要功能**
+  为所有已编译的 Java 构件生成 SHA–1 哈希 

**示例构件**  
 以下是 SHA–1 构件的示例。

```
{
  "bom-ref": "comp-52",
  "type": "library",
  "name": "jul-to-slf4j",
  "version": "2.0.6",
  "hashes": [
    {
      "alg": "SHA-1",
      "content": ""
    }
  ],
  "purl": "pkg:maven/jul-to-slf4j@2.0.6",
  "properties": [
    {
      "name": "amazon:inspector:sbom_generator:source_path",
      "value": "test-0.0.1-SNAPSHOT.jar/BOOT-INF/lib/jul-to-slf4j-2.0.6.jar"
    }
  ]
}
```

**注意**  
 此构件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### pom.properties
<a name="w2aac37c25b7c11"></a>

 `pom.properties` 文件用于 Maven 项目中以存储项目元数据，包括程序包名称和程序包版本。Amazon Inspector SBOM 生成器解析此文件以收集项目信息。

**主要功能**
+  解析和提取程序包构件、程序包组和程序包版本 

**示例 `pom.properties` 文件**  
 以下是文件 `pom.properties` 的示例。

```
#Generated by Maven
#Tue Mar 16 15:44:02 UTC 2021

version=1.6.0
groupId=net.datafaker
artifactId=datafaker
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

**排除嵌套 `pom.xml` 解析**  
 如果要在扫描已编译的 Java 应用程序时排除 `pom.xml` 解析，请使用 `--skip-nested-pomxml` 参数。

### pom.xml
<a name="w2aac37c25b7c13"></a>

 `pom.xml` 文件是 Maven 项目的核心配置文件。它包含有关项目和项目依赖关系的信息。Amazon Inspector SBOM 生成器解析 pom.xml 文件以收集依赖关系，扫描存储库中的独立文件和已编译 .jar 文件内的文件。

**主要功能**
+  解析并提取 `pom.xml` 文件中的程序包构件、程序包组和程序包版本。

**支持的 Maven 作用域和标签**  
 依赖关系是通过以下 Maven 作用域收集的：
+  compile 
+  提供的 
+  运行时 
+  测试 
+  系统 
+  导入 

 依赖关系是通过以下 Maven 标签收集的：`<optional>true</optional>`。

**带有作用域的示例 `pom.xml` 文件**  
 以下是带有作用域的 `pom.xml` 文件的示例。

```
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
</version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
<scope>runtime</scope>
</dependency>
```

**没有作用域的示例 `pom.xml` 文件**  
 以下是没有作用域的 `pom.xml` 文件的示例。

```
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.1</version>
</dependency>

<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plain-credentials</artifactId>
<version>183.va_de8f1dd5a_2b_</version>
</dependency>

<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>jackson2-api</artifactId>
<version>2.15.2-350.v0c2f3f8fc595</version>
</dependency>
```

**注意**  
 这些文件中的每一个都会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

## JavaScript 依赖扫描
<a name="w2aac37c25b9"></a>


| 编程语言 | 软件包管理器 | 支持的构件 | 工具链支持 | 开发依赖关系 | 传递依赖关系 | 私有标记 | 以递归方式 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Javascript | `Node Modules`<br />`NPM`<br />`PNPM`<br />`YARN` | `node_modules/*/package.json`<br />`package-lock.json (v1, v2, and v3) / npm-shrinkwrap.json`<br />`pnpm-lock.yaml`<br />`yarn.lock` | 不适用<br />不适用<br />不适用<br />不适用 | 不适用<br />支持<br />是<br />是 | 是<br />不适用<br />不适用<br />不适用 | 是<br />不适用<br />不适用<br />不适用 | 是<br />否<br />否<br />否 | 

### package.json
<a name="w2aac37c25b9b5"></a>

 `package.json` 文件是 Node.js 项目的核心组件。它包含有关已安装程序包的元数据。Amazon Inspector SBOM 生成器会扫描此文件，以识别程序包名称和程序包版本。

**主要功能**
+  解析 JSON 文件结构以提取程序包名称和版本 
+  识别具有私有值的私有程序包 

**示例 `package.json` 文件**  
 以下是文件 `package.json` 的示例。

```
{
"name": "arrify",
"private": true,
"version": "2.0.1",
"description": "Convert a value to an array",
"license": "MIT",
"repository": "sindresorhus/arrify"
}
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### package-lock.json
<a name="w2aac37c25b9b7"></a>

 `package-lock.json` 文件由 npm 自动生成，用于锁定为项目安装的依赖关系的确切版本。它通过存储所有依赖关系及其子依赖关系的确切版本来确保在不同环境中的一致性。该文件可以区分常规依赖关系和开发依赖关系。

**主要功能**
+  解析 JSON 文件结构以提取程序包名称和程序包版本 
+  支持开发依赖关系检测 

**示例 `package-lock.json` 文件**  
 以下是文件 `package-lock.json` 的示例。

```
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
    "assert-plus": "^1.0.0",
    "core-util-is": "1.0.2",
    "extsprintf": "^1.2.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"yallist": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
"integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
}
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### npm-shrinkwrap.json
<a name="w2aac37c25b9b9"></a>

 npm 会自动生成 `package-lock.json` 和 `npm-shrinkwrap.json` 文件，用于锁定为项目安装的依赖关系的确切版本。这样，通过存储所有依赖关系及子依赖关系的确切版本，可确保在不同环境中的一致性。这些文件可区分常规依赖关系和开发依赖关系。

**主要功能**
+  解析 JSON 文件结构的 `package-lock` 版本 1、2 和 3，以提取程序包名称和版本 
+  支持开发人员依赖关系检测（`package-lock.json` 会捕获生产和开发依赖关系，允许工具识别开发环境中使用了哪些程序包） 
+  `npm-shrinkwrap.json` 文件优先于 `package-lock.json` 文件 

**示例**  
 以下是文件 `package-lock.json` 的示例。

```
"verror": {
            "version": "1.10.0",
            "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
            "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
            "requires": {
                "assert-plus": "^1.0.0",
                "core-util-is": "1.0.2",
                "extsprintf": "^1.2.0"
            }
        },
        "wrappy": {
            "version": "1.0.2",
            "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
            "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
            "dev": true
        },
        "yallist": {
            "version": "3.0.2",
            "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
            "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
}
```

### pnpm-yaml.lock
<a name="w2aac37c25b9c11"></a>

 `pnpm-lock.yaml` 文件由 pnpm 生成，用于维护已安装依赖关系版本的记录。它还单独跟踪开发依赖关系。

**主要功能**
+  解析 YAML 文件结构以提取程序包名称和版本 
+  支持开发依赖关系检测 

**示例**  
 以下是文件 `pnpm-lock.yaml` 的示例。

```
lockfileVersion: 5.3
importers:
my-project:
dependencies:
  lodash: 4.17.21
devDependencies:
  jest: 26.6.3
specifiers:
  lodash: ^4.17.21
  jest: ^26.6.3
packages:
/lodash/4.17.21:
resolution:
  integrity: sha512-xyz
engines:
  node: '>=6'
dev: false
/jest/26.6.3:
resolution:
  integrity: sha512-xyz
dev: true
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### yarn.lock
<a name="w2aac37c25b9c13"></a>

 Amazon Inspector SBOM 生成器会尝试收集项目中 `.ear`、`.jar` 和 `.war` 文件的 SHA–1 哈希，以保证已编译的 Java 构件的完整性和可追溯性。

**主要功能**
+  为所有已编译的 Java 构件生成 SHA–1 哈希 

**示例 SHA–1 构件**  
 以下是 SHA–1 构件的示例。

```
"@ampproject/remapping@npm:^2.2.0":
version: 2.2.0
resolution: "@ampproject/remapping@npm:2.2.0"
dependencies:
"@jridgewell/gen-mapping": ^0.1.0
"@jridgewell/trace-mapping": ^0.3.9
checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292
languageName: node
linkType: hard

"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.21.4":
version: 7.21.4
resolution: "@babel/code-frame@npm:7.21.4"
dependencies:
"@babel/highlight": ^7.18.6
checksum: e5390e6ec1ac58dcef01d4f18eaf1fd2f1325528661ff6d4a5de8979588b9f5a8e852a54a91b923846f7a5c681b217f0a45c2524eb9560553160cd963b7d592c
languageName: node
linkType: hard
```

**注意**  
 此构件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

## .NET 依赖关系扫描
<a name="w2aac37c25c11"></a>


| 编程语言 | 软件包管理器 | 支持的构件 | 工具链支持 | 开发依赖关系 | 传递依赖关系 | 私有标记 | 以递归方式 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| .NET | `.NET Core`<br />`Nuget`<br />`Nuget`<br />`.NET` | `*.deps.json`<br />`Packages.config`<br />`packages.lock.json`<br />`.csproj` | 不适用<br />不适用<br />不适用<br />不适用 | 不适用<br />不适用<br />不适用<br />不适用 | 不适用<br />不适用<br />是<br />不适用 | 不适用<br />不适用<br />不适用<br />不适用 | 支持<br />是<br />是<br />是 | 

### Packages.config
<a name="w2aac37c25c11b5"></a>

 `Packages.config` 文件是较旧版本的 Nuget 用来管理项目依赖关系的 XML 文件。它列出了项目引用的所有程序包，包括特定版本。

**主要功能**
+  解析 XML 结构以提取软件包 IDs 和版本 

**示例**  
 以下是文件 `Packages.config` 的示例。

```
<?xml version="1.0" encoding="utf-8"? >
<packages>
<package id="FluentAssertions" version="5.4.1" targetFramework="net461" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
<package id="SpecFlow" version="2.4.0" targetFramework="net461" />
<package id="SpecRun.Runner" version="1.8.0" targetFramework="net461" />
<package id="SpecRun.SpecFlow" version="1.8.0" targetFramework="net461" />
<package id="SpecRun.SpecFlow.2-4-0" version="1.8.0" targetFramework="net461" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
</packages>
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### \*.deps.json
<a name="w2aac37c25c11b7"></a>

 `*.deps.json` 文件由 .NET Core 项目生成，包含有关所有依赖关系的详细信息，包括路径、版本和运行时依赖关系。此文件可确保运行时具有用于加载正确版本的依赖关系的必要信息。

**主要功能**
+ 解析 JSON 结构以获取全面的依赖关系详细信息
+  在 `libraries` 列表中提取程序包名称和版本。

**示例 `.deps.json` 文件**  
 以下是文件 `.deps.json` 的示例。

```
{
"runtimeTarget": {
    "name": ".NETCoreApp,Version=v7.0",
    "signature": ""
},
"libraries": {
    "sample-Nuget/1.0.0": {
        "type": "project",
        "serviceable": false,
        "sha512": ""
    },
    "Microsoft.EntityFrameworkCore/7.0.5": {
        "type": "package",
        "serviceable": true,
        "sha512": "sha512-RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==",
        "path": "microsoft.entityframeworkcore/7.0.5",
        "hashPath": "microsoft.entityframeworkcore.7.0.5.nupkg.sha512"
    },
}
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### packages.lock.json
<a name="w2aac37c25c11b9"></a>

 `packages.lock.json` 文件由较新版本的 Nuget 用来锁定 .NET 项目依赖关系的确切版本，以保证在不同环境中一致使用相同的版本。

**主要功能**
+ 解析 JSON 结构以列出锁定的依赖关系
+ 同时支持直接依赖关系和传递依赖关系
+ 提取程序包名称和已解析的版本

**示例 `packages.lock.json` 文件**  
 以下是文件 `packages.lock.json` 的示例。

```
{
"version": 1,
"dependencies": {
"net7.0": {
  "Microsoft.EntityFrameworkCore": {
    "type": "Direct",
    "requested": "[7.0.5, )",
    "resolved": "7.0.5",
    "contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==",
    "dependencies": {
      "Microsoft.EntityFrameworkCore.Abstractions": "7.0.5",
      "Microsoft.EntityFrameworkCore.Analyzers": "7.0.5",
      "Microsoft.Extensions.Caching.Memory": "7.0.0",
      "Microsoft.Extensions.DependencyInjection": "7.0.0",
      "Microsoft.Extensions.Logging": "7.0.0"
    }
  },
  "Newtonsoft.Json": {
    "type": "Direct",
    "requested": "[13.0.3, )",
    "resolved": "13.0.3",
    "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
  },
  "Microsoft.Extensions.Primitives": {
    "type": "Transitive",
    "resolved": "7.0.0",
    "contentHash": "um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q=="
  }
}
}
}
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### .csproj
<a name="w2aac37c25c11c11"></a>

 `.csproj` 文件采用 XML 编写，是 .NET 项目的项目文件。它包括对 Nuget 程序包、项目属性和构建配置的引用。

**主要功能**
+  解析 XML 结构以提取程序包引用 

**示例 `.csproj` 文件**  
 以下是文件 `.csproj` 的示例。

```
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<RootNamespace>sample_Nuget</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
</ItemGroup>
</Project>
```

**示例 `.csproj` 文件**  
 以下是文件 `.csproj` 的示例。

```
<PackageReference Include="ExamplePackage" Version="6.*" />
<PackageReferencePackageReference Include="ExamplePackage" Version="(4.1.3,)" />
<PackageReference Include="ExamplePackage" Version="(,5.0)" />
<PackageReference Include="ExamplePackage" Version="[1,3)" />
<PackageReference Include="ExamplePackage" Version="[1.3.2,1.5)" />
```

**注意**  
 这些文件中的每一个都会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

## PHP 依赖关系扫描
<a name="w2aac37c25c13"></a>


| 编程语言 | 软件包管理器 | 支持的构件 | 工具链支持 | 开发依赖关系 | 传递依赖关系 | 私有标记 | 以递归方式 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| PHP | Composer | `composer.lock`<br />`/vendor/composer/installed.json` | 不适用<br />不适用 | 不适用<br />不适用 | 支持<br />是 | 不适用<br />不适用 | 支持<br />是 | 

### composer.lock
<a name="w2aac37c25c13b5"></a>

 会在运行 composer install 或 composer update 命令时自动生成 `composer.lock` 文件。该文件可保证在每个环境中均安装相同版本的依赖关系。这样可提供一致且可靠的构建过程。

**主要功能**
+  解析结构化数据的 JSON 格式 
+  提取依赖关系名称和版本 

**示例 `composer.lock` 文件**  
 以下是文件 `composer.lock` 的示例。

```
{
"packages": [
    {
        "name": "nesbot/carbon",
        "version": "2.53.1",
        // TRUNCATED
    },
    {
        "name": "symfony/deprecation-contracts",
        "version": "v3.2.1",
        // TRUNCATED
    },
    {
        "name": "symfony/polyfill-mbstring",
        "version": "v1.27.0",
        // TRUNCATED
    }
]
// TRUNCATED
}
```

**注意**  
 该文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### /vendor/composer/installed.json
<a name="w2aac37c25c13b7"></a>

 `/vendor/composer/installed.json` 文件位于 `vendor/composer` 目录中，提供了所有已安装程序包及程序包版本的详尽列表。

**主要功能**
+  解析结构化数据的 JSON 格式 
+  提取依赖关系名称和版本 

**示例 `/vendor/composer/installed.json` 文件**  
 以下是文件 `/vendor/composer/installed.json` 的示例。

```
 
{
"packages": [
    {
        "name": "nesbot/carbon",
        "version": "2.53.1",
        // TRUNCATED
    },
    {
        "name": "symfony/deprecation-contracts",
        "version": "v3.2.1",
        // TRUNCATED
    },
    {
        "name": "symfony/polyfill-mbstring",
        "version": "v1.27.0",
        // TRUNCATED
    }
]
// TRUNCATED
}
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

## Python 依赖关系扫描
<a name="w2aac37c25c15"></a>


| 编程语言 | 软件包管理器 | 支持的构件 | 工具链支持 | 开发依赖关系 | 传递依赖关系 | 私有标记 | 以递归方式 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Python | `pip`<br />`Poetry`<br />`Pipenv`<br />`uv`<br />`Egg/Wheel` | `requirements.txt`<br />`Poetry.lock`<br />`Pipfile.lock`<br />`uv.lock`<br />`.egg-info/PKG-INFO`<br />`.dist-info/METADATA` | 不适用<br />不适用<br />不适用<br />不适用<br />不适用<br />不适用 | 不适用<br />不适用<br />不适用<br />是<br />不适用<br />不适用 | 不适用<br />不适用<br />不适用<br />不适用<br />不适用<br />不适用 | 不适用<br />不适用<br />不适用<br />不适用<br />不适用<br />不适用 | 支持<br />是<br />是<br />是<br />是<br />是 | 

### requirements.txt
<a name="w2aac37c25c15b5"></a>

 `requirements.txt` 文件是在 Python 项目中广泛使用的一种格式，用于指定项目依赖关系。此文件中的每一行都包含一个带有其版本约束的程序包。Amazon Inspector SBOM 生成器会解析此文件以准确识别和编目依赖关系。

**主要功能**
+  支持版本说明符（== 和 ˜=） 
+  支持注释和复杂的依赖关系行 

**注意**  
 不支持版本说明符 <= 和 =>。

**示例 `requirements.txt` 文件**  
 以下是文件 `requirements.txt` 的示例。

```
flask==1.1.2
requests==2.24.0
numpy==1.18.5
foo~=1.2.0
# Comment about a dependency
scipy. # invalid
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### Pipfile.lock
<a name="w2aac37c25c15b9"></a>

 Pipenv 是一款集所有打包世界精华（捆绑、固定和解除固定）于一身的工具。`Pipfile.lock` 可锁定依赖关系的确切版本，以便实现确定性构建。Amazon Inspector SBOM 生成器读取此文件，以列出依赖关系及其已解析的版本。

**主要功能**
+  解析依赖关系解析的 JSON 格式 
+  支持默认依赖关系和开发依赖关系 

**示例 `Pipfile.lock` 文件**  
 以下是文件 `Pipfile.lock` 的示例。

```
{
"default": {
    "requests": {
        "version": "==2.24.0",
        "hashes": [
            "sha256:cc718bb187e53b8d"
        ]
    }
},
"develop": {
    "blinker": {
        "hashes": [
            "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01",
            "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83"
        ],
        "markers": "python_version >= '3.8'",
        "version": "==1.8.2"
    }
}
}
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### Poetry.lock
<a name="w2aac37c25c15c11"></a>

 Poetry 是一款适用于 Python 的依赖关系管理和打包工具。`Poetry.lock` 文件可锁定依赖关系的确切版本，以便实现一致的环境。Amazon Inspector SBOM 生成器会从该文件中提取详细的依赖关系信息。

**主要功能**
+  解析结构化数据的 TOML 格式 
+  提取依赖关系名称和版本 

**示例 `Poetry.lock` 文件**  
 以下是文件 `Poetry.lock` 的示例。

```
[[package]]
name = "flask"
version = "1.1.2"
description = "A simple framework for building complex web applications."
category = "main"
optional = false
python-versions = ">=3.5"
[[package]]
name = "requests"
version = "2.24.0"
description = "Python HTTP for Humans."
category = "main"
optional = false
python-versions = ">=3.5"
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### uv.lock
<a name="w2aac37c25c15c13"></a>

 uv是一个写入的快速Python包管理器Rust。`uv.lock` 文件可锁定依赖关系的确切版本，以便实现一致的环境。Amazon Inspector SBOM 生成器会从该文件中提取详细的依赖关系信息。

**主要功能**
+  解析结构化数据格式化`uv.lock`的 TOML 
+  提取依赖关系名称和版本 
+  支持开发依赖关系 
+  仅收集源为注册表的软件包 

**示例 `uv.lock` 文件**  
 以下是文件 `uv.lock` 的示例。

```
version = 1
requires-python = ">=3.12"

[[package]]
name = "flask"
version = "3.1.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
    { name = "blinker" },
    { name = "click" },
    { name = "itsdangerous" },
    { name = "jinja2" },
    { name = "markupsafe" },
    { name = "werkzeug" },
]

[[package]]
name = "pytest"
version = "8.3.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
    { name = "iniconfig" },
    { name = "packaging" },
    { name = "pluggy" },
]

[package.dev-dependencies]
dev = [
    { name = "pytest" },
]
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### Egg/Wheel
<a name="w2aac37c25c15c15"></a>

 对于全局安装的 Python 程序包，Amazon Inspector SBOM 生成器支持解析在 `.egg-info/PKG-INFO` 和 `.dist-info/METADATA` 目录中找到的元数据文件。这些文件提供了有关已安装程序包的详细元数据。

**主要功能**
+  提取程序包名称和版本 
+  同时支持 egg 和 wheel 两种格式 

**扩展了默认扫描路径（Sbomgen 1.13.0 及更高版本）**  
 在 Amazon Inspector SBOM Generator 1.13.0 及更高版本中，扫描仪的默认本地主机扫描路径已扩展到包括用户级`pip`安装 (`pip install --user`) 和命令产生的安装。`uv tool install`这样可以检测安装在系统范围之外的 Python 包`site-packages`，包括推荐安装方法为 `uv tool install crewai` CrewaI 之类的框架。  
 添加了默认扫描路径：  
 Linux—`/home/*/.local/lib/python*/site-packages/`，`/home/*/.local/share/uv/tools/*/lib/python*/site-packages/`（对于以 root 身份运行的容器，则具有`/root/`等效项）。
 Windows – `%APPDATA%\Python\Python*\Lib\site-packages\`, `%LOCALAPPDATA%\uv\tools\*\Lib\site-packages\`. 
 对于任何平台上的非默认Python安装前缀，请使用`--path`参数将扫描仪指向安装位置。

**示例 `PKG-INFO/METADATA` 文件**  
 以下是文件 `PKG-INFO/METADATA` 的示例。

```
Metadata-Version: 1.2
Name: Flask
Version: 1.1.2
Summary: A simple framework for building complex web applications.
Home-page: https://palletsprojects.com/p/flask/
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

## Ruby 依赖关系扫描
<a name="w2aac37c25c17"></a>


| 编程语言 | 软件包管理器 | 支持的构件 | 工具链支持 | 开发依赖关系 | 传递依赖关系 | 私有标记 | 以递归方式 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Ruby | Bundler | `Gemfile.lock`<br />`.gemspec`<br />`globall installed Gems` | 不适用<br />不适用<br />不适用 | 不适用<br />不适用<br />不适用 | 是<br />不适用<br />不适用 | 不适用<br />不适用<br />不适用 | 支持<br />是<br />是 | 

### Gemfile.lock
<a name="w2aac37c25c17b5"></a>

 `Gemfile.lock` 文件可锁定所有依赖关系的确切版本，以确保在每个环境中均使用相同的版本。

**主要功能**
+  解析 `Gemfile.lock` 文件以识别依赖关系和依赖关系版本 
+  提取详细的程序包名称和程序包版本 

**示例 `Gemfile.lock` 文件**  
 以下是文件 `Gemfile.lock` 的示例。

```
GEM
remote: https://rubygems.org/
specs:
ast (2.4.2)
awesome_print (1.9.2)
diff-lcs (1.5.0)
json (2.6.3)
parallel (1.22.1)
parser (3.2.2.0)
nokogiri (1.16.6-aarch64-linux)
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### .gemspec
<a name="w2aac37c25c17b7"></a>

 `.gemspec` 文件是包含关于 Gem 的元数据的 RubyGem 文件。Amazon Inspector SBOM 生成器可解析此文件以收集有关 Gem 的详细信息。

**主要功能**
+  解析并提取 Gem 名称和 Gem 版本 

**注意**  
 不支持参考规范。

**示例 `.gemspec` 文件**  
 以下是文件 `.gemspec` 的示例。

```
Gem::Specification.new do |s|
s.name        = "generategem"
s.version     = "2.0.0"
s.date        = "2020-06-12"
s.summary     = "generategem"
s.description = "A Gemspec Builder"
s.email       = "edersondeveloper@gmail.com"
s.files       = ["lib/generategem.rb"]
s.homepage    = "https://github.com/edersonferreira/generategem"
s.license     = "MIT"
s.executables = ["generategem"]
s.add_dependency('colorize', '~> 0.8.1')
end
```

```
# Not supported 

Gem::Specification.new do |s|
s.name        = &class1
s.version     = &foo.bar.version
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### 全局安装的 Gem
<a name="w2aac37c25c17b9"></a>

 Amazon Inspector SBOM 生成器支持扫描全局安装的 Gem，这些 Gem 位于标准目录中，例如 Amazon EC2/Amazon ECR 中的 `/usr/local/lib/ruby/gems/<ruby_version>/gems/` 和 Lambda 中的 `ruby/gems/<ruby_version>/gems/`。这样可确保识别和编目所有全局安装的依赖关系。

**主要功能**
+  识别并扫描标准目录中所有全局安装的 Gem 
+  提取每个全球安装的 Gem 的元数据和版本信息 

**示例目录结构**  
 以下是目录结构的示例。

```
. 
└── /usr/local/lib/ruby/3.5.0/gems/ 
├── actrivesupport-6.1.4 
├── concurrent-ruby-1.1.9 
└── i18n-1.8.10
```

**注意**  
 此结构会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

## Rust 依赖关系扫描
<a name="w2aac37c25c19"></a>


| 编程语言 | 软件包管理器 | 支持的构件 | 工具链支持 | 开发依赖关系 | 传递依赖关系 | 私有标记 | 以递归方式 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Rust | Cargo.toml | `Cargo.toml`<br />`Cargo.lock`<br /> `Rust binary (built with cargo-auditable)` | 不适用<br />不适用<br />是 | 不适用<br />不适用<br />不适用 | 不适用<br />是<br />不适用 | 不适用<br />不适用<br />不适用 | 支持<br />是<br />是 | 

### Cargo.toml
<a name="w2aac37c25c19b5"></a>

 `Cargo.toml` 文件是 Rust 项目的清单文件。

**主要功能**
+  解析并提取 `Cargo.toml` 文件以识别项目程序包名称和版本。

**示例 `Cargo.toml` 文件**  
 以下是文件 `Cargo.toml` 的示例。

```
[package]
name = "wait-timeout"
version = "0.2.0"
description = "A crate to wait on a child process with a timeout specified across Unix and\nWindows platforms.\n"
homepage = "https://github.com/alexcrichton/wait-timeout"
documentation = "https://docs.rs/wait-timeout"
readme = "README.md"
categories = ["os"]
license = "MIT/Apache-2.0"
repository = "https://github.com/alexcrichton/wait-timeout"
[target."cfg(unix)".dependencies.libc]
version = "0.2"
[badges.appveyor]
repository = "alexcrichton/wait-timeout"
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### Cargo.lock
<a name="w2aac37c25c19b7"></a>

 `Cargo.lock` 文件会锁定依赖关系版本，以确保无论何时构建项目均使用相同的版本。

**主要功能**
+  解析 `Cargo.lock` 文件以识别所有依赖关系和依赖关系版本。

**示例 `Cargo.lock` 文件**  
 以下是文件 `Cargo.lock` 的示例。

```
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "adler32"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"

[[package]]
name = "aho-corasick"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
```

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

### 具有 cargo-auditable 的 Rust 二进制文件
<a name="w2aac37c25c19b9"></a>

 Amazon Inspector SBOM 生成器收集来自使用 `cargo-auditable` 库构建的 Rust 二进制文件的依赖关系。这样，通过启用从已编译二进制文件中提取依赖关系，可提供额外的依赖关系信息。

**主要功能**
+  直接从使用 `cargo-auditable` 库构建的 Rust 二进制文件中提取依赖关系信息 
+  检索二进制文件中包含的依赖关系的元数据和版本信息 

**注意**  
 此文件会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

## 快速依赖扫描
<a name="w2aac37c25c21"></a>


| 编程语言 | 软件包管理器 | 支持的构件 | 工具链支持 | 开发依赖关系 | 传递依赖关系 | 私有标记 | 以递归方式 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Swift | Swift Package Manager | `Package.resolved (v1, v2, and v3)` | 不适用 | 不适用 | 不适用 | 不适用 | 是 | 

### 包裹. 已解决
<a name="w2aac37c25c21b5"></a>

 该`Package.resolved`文件由 Package Man Swift ager 生成，用于锁定Swift项目依赖关系的确切版本。Amazon Inspector SBOM 生成器解析此文件以收集依赖项名称、版本和源存储库信息。支持该`Package.resolved`格式的架构版本 1、2 和 3。

**注意**  
 Amazon Inspector SBOM 生成器不会生成该`Package.resolved`文件。如果您的项目尚不包含`Package.resolved`文件，则必须在扫描之前通过在项目目录`swift package resolve`中运行来生成该文件。

**支持的构件**
+  `Package.resolved`（架构版本 1） 
+  `Package.resolved`（架构版本 2） 
+  `Package.resolved`（架构版本 3） 

**主要功能**
+  从固定的包中提取依赖项名称和锁定版本 
+  从源存储库 URL 派生包命名空间（例如，`github.com/Alamofire`） 
+  跳过没有已解析版本的仅限分支的 pin 
+  过滤掉本地源代码控制和文件系统依赖关系 
+  排除`.build/`目录内的`Package.resolved`文件以防止从 Package Man Swift ager 构建缓存中收集依赖关系 

**注意**  
 该`Package.resolved`文件与平台无关。Amazon Inspector SBOM 生成器在Linux、macOS和上以递归方式发现此文件。Windows

**示例`Package.resolved`文件 (v2)**  
 以下是版本 2 `Package.resolved` 文件的示例。

```
{
  "pins" : [
    {
      "identity" : "alamofire",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/Alamofire/Alamofire.git",
      "state" : {
        "revision" : "a1b2c3...",
        "version" : "5.8.1"
      }
    },
    {
      "identity" : "swift-argument-parser",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/apple/swift-argument-parser.git",
      "state" : {
        "revision" : "d4e5f6...",
        "version" : "1.3.0"
      }
    }
  ],
  "version" : 2
}
```

**示例`Package.resolved`文件 (v1)**  
 以下是版本 1 `Package.resolved` 文件的示例。

```
{
  "object": {
    "pins": [
      {
        "package": "Alamofire",
        "repositoryURL": "https://github.com/Alamofire/Alamofire.git",
        "state": {
          "branch": null,
          "revision": "a1b2c3...",
          "version": "5.8.1"
        }
      }
    ]
  },
  "version": 1
}
```

**PURL 示例**  
 以下是 Package Manager 依赖项的Swift软件包 URL 示例。

```
pkg:swift/github.com/Alamofire/Alamofire@5.8.1
```

**注意**  
 这些文件中的每一个都会生成包含程序包 URL 的输出。此 URL 可用于在生成软件物料清单时指定有关软件包的信息，并且可以包含在 [ScanSbom](https://docs.aws.amazon.com/inspector/v2/APIReference/API_inspector-scan_ScanSbom.html)API 中。有关更多信息，请参阅网站上的[软件包网址](https://github.com/package-url/purl-spec)。 GitHub 

## 不受支持的构件
<a name="w2aac37c25c23"></a>

 本节介绍了不受支持的构件。

### Java
<a name="w2aac37c25c23b5"></a>

 Amazon Inspector SBOM 生成器仅支持对来源于[主流 Maven 存储库](https://repo1.maven.org/maven2)的依赖关系进行漏洞检测。不支持私有或自定义 Maven 存储库，例如 Red Hat Maven 和 Jenkins。为了准确检测漏洞，请确保 Java 依赖关系是从主流 Maven 存储库中拉取的。来自其他存储库的依赖关系不会包含在漏洞扫描中。

### JavaScript
<a name="w2aac37c25c23b7"></a>

**esbuild 捆绑包**  
 对于 esbuild 压缩捆绑包，Amazon Inspector SBOM 生成器不支持对使用 esbuild 的项目进行依赖关系扫描。由 esbuild 生成的源映射不包含生成准确 Sbomgen 所需的足够元数据（依赖关系名称和版本）。要获得可靠的结果，请在捆绑过程之前扫描原始项目文件，例如 `node_modules/directory` 和 `package-lock.json`。

**package.json**  
 Amazon Inspector SBOM 生成器不支持扫描根级别 package.json 文件以获取依赖关系信息。此文件仅指定程序包名称和版本范围，但不包括完全解析的程序包版本。要获得准确的扫描结果，请使用 `package.json` 或包含已解析版本的其他锁定文件（例如 `yarn.lock` 和 `pnpm.lock`）。

### Dotnet
<a name="w2aac37c25c23b9"></a>

 当在 `PackageReference` 中使用浮动版本或版本范围时，如果不执行程序包解析，就更难确定项目中使用的确切程序包版本。浮动版本和版本范围允许开发人员指定可接受程序包版本，而不是固定版本的范围。

### Go 二进制文件
<a name="w2aac37c25c23c11"></a>

 Amazon Inspector SBOM 生成器不会扫描使用配置为排除构建 ID 的构建标志构建的 Go 二进制文件。这些构建标志会阻止 Amazon Inspector SBOM 生成器将二进制文件准确地映射到其原始来源。由于无法提取程序包信息，因此不支持不明确的 Go 二进制文件。要进行准确的依赖关系扫描，请确保 Go 二进制文件是使用默认设置（包括构建 ID）构建的。

### Rust 二进制文件
<a name="w2aac37c25c23c13"></a>

 Amazon Inspector SBOM 生成器只有在使用 [cargo-auditable 库](https://github.com/rust-secure-code/cargo-auditable)构建二进制文件时才会扫描 Rust 二进制文件。未利用此库的 Rust 二进制文件缺少进行准确依赖关系提取所需的必要元数据。Amazon Inspector SBOM 生成器从 Rust 1.7.3 开始提取已编译的 Rust 工具链版本，但仅适用于 Linux 环境中的二进制文件。为了进行全面扫描，请在 Linux 上使用 cargo-auditable 构建 Rust 二进制文件。

**注意**  
 即使提取了工具链版本，也不支持对 Rust 工具链本身的漏洞检测。