demaconsulting/SpdxTool

GitHub: demaconsulting/SpdxTool

SpdxTool 是一款 .NET 命令行工具,用于操作、验证和可视化 SPDX 格式的软件物料清单文件。

Stars: 0 | Forks: 0

# SPDX Tool ![GitHub forks](https://img.shields.io/github/forks/demaconsulting/SpdxTool?style=plastic) ![GitHub Repo stars](https://img.shields.io/github/stars/demaconsulting/SpdxTool?style=plastic) ![GitHub contributors](https://img.shields.io/github/contributors/demaconsulting/SpdxTool?style=plastic) ![GitHub](https://img.shields.io/github/license/demaconsulting/SpdxTool?style=plastic) ![Build](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/91061ddfb0071041.svg) [![质量门状态](https://sonarcloud.io/api/project_badges/measure?project=demaconsulting_SpdxTool&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=demaconsulting_SpdxTool) [![安全评级](https://sonarcloud.io/api/project_badges/measure?project=demaconsulting_SpdxTool&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=demaconsulting_SpdxTool) [![NuGet 版本](https://img.shields.io/nuget/v/DemaConsulting.SpdxTool?style=plastic)](https://www.nuget.org/packages/DemaConsulting.SpdxTool) 用于操作 SPDX SBOM 文件的 Dotnet 工具 ## 安装 以下命令会将 SpdxTool 添加到 Dotnet 工具清单文件中: ``` dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local DemaConsulting.SpdxTool ``` 然后可以通过以下方式执行该工具: ``` dotnet spdx-tool ``` ## 用法 以下展示了 SpdxTool 的命令行用法: ``` Usage: spdx-tool [options] [arguments] Options: -h, --help Show this help message and exit -v, --version Show version information and exit -l, --log Log output to file -s, --silent Silence console output --validate Perform self-validation -r, --result Self-validation result file (.trx TRX or .xml JUnit XML) Commands: help Display extended help about a command add-package Add package to SPDX document (workflow only). add-relationship Add relationship between elements. copy-package Copy package between SPDX documents (workflow only). diagram [tools] Generate mermaid diagram. find-package Find package ID in SPDX document get-version Get the version of an SPDX package. hash Generate or verify hashes of files print Print text to the console query [args] Query program output for value rename-id Rename an element ID in an SPDX document. run-workflow Runs the workflow file/url set-variable Set workflow variable (workflow only). to-markdown [args] Create Markdown summary for SPDX document update-package Update package in SPDX document (workflow only). validate [ntia] Validate SPDX document for issues ``` 关于用法的更详细说明可以在[命令行文档][command-line-docs]中找到 ## 工作流 YAML 文件 可以使用以下格式的工作流 YAML 文件来驱动 SpdxTool: ``` # Workflow 参数 parameters: parameter-name: value # Workflow 步骤 steps: - command: inputs: - command: inputs: input1: value input2: ${{ parameter-name }} ``` 关于工作流 YAML 文件的更详细说明可以在[工作流文档][workflow-docs]中找到 ## 自验证 运行自验证会生成包含以下信息的报告: ``` # DemaConsulting.SpdxTool | Information | Value | | :------------------ | :------------------------------------------------- | | SpdxTool Version | | | Machine Name | | | OS Version | | | DotNet Runtime | | | Time Stamp | | ✓ SpdxTool_AddPackage - Passed ✓ SpdxTool_AddRelationship - Passed ✓ SpdxTool_Validate - Passed ✓ SpdxTool_CopyPackage - Passed ✓ SpdxTool_Diagram - Passed ✓ SpdxTool_FindPackage - Passed ✓ SpdxTool_GetVersion - Passed ✓ SpdxTool_Hash - Passed ✓ SpdxTool_Ntia - Passed ✓ SpdxTool_Query - Passed ✓ SpdxTool_RenameId - Passed ✓ SpdxTool_RunNuGetWorkflow - Passed ✓ SpdxTool_ToMarkdown - Passed ✓ SpdxTool_UpdatePackage - Passed Total Tests: 14 Passed: 14 Failed: 0 Validation Passed ``` 报告中的每个测试都证明特定命令能正常工作: - **SpdxTool_AddPackage** - `add-package` 命令将带有关系的包添加到 SPDX 文件中。 - **SpdxTool_AddRelationship** - `add-relationship` 命令在 SPDX 元素之间添加关系。 - **SpdxTool_Validate** - `validate` 命令接受有效的 SPDX 文件并拒绝无效的 SPDX 文件。 - **SpdxTool_CopyPackage** - `copy-package` 命令在 SPDX 文件之间复制带有关系的包。 - **SpdxTool_Diagram** - `diagram` 命令从 SPDX 文件生成 Mermaid 图表。 - **SpdxTool_FindPackage** - `find-package` 命令在 SPDX 文件中按名称定位包。 - **SpdxTool_GetVersion** - `get-version` 命令从 SPDX 文件中检索包版本。 - **SpdxTool_Hash** - `hash` 命令生成并验证文件哈希值。 - **SpdxTool_Ntia** - `validate` 命令强制执行 NTIA 最低 SBOM 元素要求。 - **SpdxTool_Query** - `query` 命令从程序输出中提取值。 - **SpdxTool_RenameId** - `rename-id` 命令在整个 SPDX 文件中重命名元素标识符。 - **SpdxTool_RunNuGetWorkflow** - `run-workflow` 命令从 NuGet 包执行工作流。 - **SpdxTool_ToMarkdown** - `to-markdown` 命令从 SPDX 文件生成 Markdown 摘要。 - **SpdxTool_UpdatePackage** - `update-package` 命令更新 SPDX 文件中包的所有字段。 有关每个验证测试的详细说明,请参阅[用户指南][user-guide]。 验证失败时,工具将以非零退出代码退出。 此报告在需要工具验证证据的受监管行业中可能很有用。 ## 项目质量 本项目保持高代码质量标准: - ✓ 全面的单元测试覆盖率 - ✓ 使用多个分析器进行静态代码分析 - ✓ 使用 SonarCloud 进行持续集成 - ✓ 用于工具正确性的自验证系统 - ✓ 将警告视为错误 - ✓ 使用 EditorConfig 保持一致的代码风格 - ✓ **持续合规**:每次 CI 运行都会自动生成合规证据, 遵循[持续合规][link-continuous-compliance]方法论 ## 许可证 版权所有 (c) DEMA Consulting。根据 MIT 许可证授权。详见 [LICENSE][link-license]。 通过为此项目做出贡献,您同意您的贡献将根据 MIT 许可证进行授权。 ## 更多信息 更多信息可在以下位置找到: - [架构文档][architecture] - [MSBuild 集成][msbuild-integration] - [SPDX 站点][spdx-site] - [GitHub CI][github-ci-docs] - [与 Microsoft SBOM 工具配合使用][sbom-tool-docs]
标签:DevSecOps, Homebrew安装, NuGet包, SBOM, SPDX, 上游代理, 依赖管理, 多人体追踪, 开源合规, 文件处理, 清单文件, 硬件无关, 网络调试, 自动化, 许可证管理, 跌倒检测, 软件物料清单