17 个版本

新增 0.5.5 2024 年 8 月 6 日
0.5.4 2024 年 7 月 17 日
0.5.3 2024 年 6 月 4 日
0.5.0 2024 年 3 月 1 日
0.3.1 2021 年 12 月 9 日

139Cargo 插件

Download history 403/week @ 2024-04-16 906/week @ 2024-04-23 500/week @ 2024-04-30 596/week @ 2024-05-07 905/week @ 2024-05-14 889/week @ 2024-05-21 557/week @ 2024-05-28 1013/week @ 2024-06-04 649/week @ 2024-06-11 1806/week @ 2024-06-18 775/week @ 2024-06-25 3358/week @ 2024-07-02 1754/week @ 2024-07-09 1555/week @ 2024-07-16 2110/week @ 2024-07-23 1315/week @ 2024-07-30

6,966 每月下载量

Apache-2.0

1.5MB
33K SLoC

Build Status Crates.io License Website Slack Invite Group Discussion Twitter

cargo-cyclonedx

CycloneDX 插件为 cargo 创建了一个自定义的 cargo 子命令,该命令生成描述 cargo 项目的软件物料清单 (SBOM) 文件。

CycloneDX 是一种轻量级的 SBOM 规范,易于创建,可由人和机器读取,易于解析。

用法

安装

cargo install cargo-cyclonedx

cargo 执行

cargo cyclonedx

这将在工作空间中每个存在的 Cargo.toml 文件旁边生成一个 bom.xml 文件。

命令行选项

      --manifest-path <PATH>
          Path to Cargo.toml

  -f, --format <FORMAT>
          Output BOM format: json, xml

      --describe <DESCRIBE>
          Possible values:
          - crate:             Describe the entire crate in a single SBOM file, with Cargo targets as subcomponents. (default)
          - binaries:          A separate SBOM is emitted for each binary (bin, cdylib) while all other targets are ignored
          - all-cargo-targets: A separate SBOM is emitted for each Cargo target, including things that aren't directly executable (e.g rlib)

  -v, --verbose...
          Use verbose output (-vv for debug logging, -vvv for tracing)

  -q, --quiet...
          Disable progress reports (-qq to suppress warnings)

      --all-features
          Activate all available features

      --no-default-features
          Do not activate the `default` feature

  -F, --features <FEATURES>
          Space or comma separated list of features to activate

      --target <TARGET>
          The target to generate the SBOM for, e.g. 'x86_64-unknown-linux-gnu'.
          Use 'all' to include dependencies for all possible targets.
          Defaults to the host target, as printed by 'rustc -vV'

      --target-in-filename
          Include the target platform of the BOM in the filename

  -a, --all
          List all dependencies instead of only top-level ones (default)

      --top-level
          List only top-level dependencies

      --override-filename <FILENAME>
          Custom string to use for the output filename

      --license-strict
          Reject the deprecated '/' separator for licenses, treating 'MIT/Apache-2.0' as an error

      --license-accept-named <LICENSE_ACCEPT_NAMED>
          Add license names which will not be warned about when parsing them as a SPDX expression fails

      --spec-version <SPEC_VERSION>
          The CycloneDX specification version to output: `1.3`, `1.4` or `1.5`. Defaults to 1.3

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

与其他工具的不同之处

许多语言无关的工具支持为 Rust 项目生成 SBOM。然而,它们通常依赖于解析 Cargo.lock 文件,这严重限制了它们可以获取的信息。

相比之下,cargo cyclonedxCargo.lockcargo metadata中获取数据,这使得它支持许多仅限于Cargo.lock的工具所不支持的功能。

  • 为特定的crate或二进制文件创建SBOM,而不是整个工作区
  • 尊重已启用的Cargo功能的特定组合,匹配您的构建配置
  • 省略dev依赖项,这些依赖项不会影响最终的可执行文件
  • 记录额外的字段,例如每个组件的许可证

贡献

有关详细信息,请参阅CONTRIBUTING

漏洞赏金

我们正在运行由Sovereign Tech FundBug Resilience Program资助的漏洞赏金计划。非常感谢!

CycloneDX Rust Cargo版权所有(c)OWASP基金会。版权所有。

在Apache 2.0许可的条款下,允许修改和重新分发。有关完整的许可证,请参阅LICENSE文件。

依赖项

~14–23MB
~340K SLoC