mstykow/provenant

GitHub: mstykow/provenant

Rust 重写的 ScanCode 兼容代码扫描工具,用于高效检测许可证合规性、提取包元数据并生成多种行业标准格式的合规报告。

Stars: 12 | Forks: 2

# Provenant 一个使用 Rust 重写的 [ScanCode Toolkit](https://github.com/aboutcode-org/scancode-toolkit),用于扫描代码库的许可证、包元数据、文件元数据以及相关的来源数据。 ## 概述 `Provenant` 被构建为一个与 ScanCode 兼容的替代方案,非常注重正确性、功能对等以及安全的静态解析。 目前,该代码仓库涵盖了以下高级扫描工作流: - 许可证检测以及 ScanCode 风格的许可证结果输出 - 跨多种生态系统的包和依赖元数据提取 - 关联 manifest 和 lockfile 的包组装 - 文件元数据和扫描环境元数据 - 可选的版权、持有者和作者检测 - 可选的 email 和 URL 提取 - 多种输出格式,包括 ScanCode 风格的 JSON、YAML、JSON Lines、SPDX、CycloneDX、HTML、Debian copyright 和自定义模板 有关架构、支持的格式、测试和贡献者指南,请从 [文档索引](docs/DOCUMENTATION_INDEX.md) 开始。 ## 功能 - 单个独立的二进制文件 - 具有原生并发性的并行扫描 - 与 ScanCode 兼容的 JSON 输出和广泛的输出格式支持 - 跨多种生态系统的广泛包 manifest 和 lockfile 覆盖 - 针对同级、嵌套和工作区风格输入的包组装 - 包含和排除过滤、路径规范化以及扫描结果过滤 - 用于重复运行的持久化扫描缓存控制 - 安全优先的解析,具有明确的保障措施,并在必要时进行侧重于兼容性的权衡 ## 安装说明 ### 从 Crates.io 安装 在 `crates.io` 上以 `provenant-cli` 的 crate 名称安装 Provenant 包: ``` cargo install provenant-cli ``` 这将安装 `provenant` 二进制文件。 ### 下载预编译二进制文件 从 [GitHub Releases](https://github.com/mstykow/provenant/releases) 页面下载适用于您平台的发布归档文件。 解压归档文件并将二进制文件放置在您的 `PATH` 路径中的某个位置。 在 Linux 和 macOS 上: ``` tar xzf provenant-*.tar.gz sudo mv provenant /usr/local/bin/ ``` 在 Windows 上,解压 `.zip` 发布文件并将 `provenant.exe` 添加到您的 `PATH` 中。 ### 从源码构建 对于常规的源码构建,您只需要 Rust 工具链: ``` git clone https://github.com/mstykow/provenant.git cd provenant cargo build --release ``` Cargo 会将编译好的二进制文件放置在 `target/release/` 目录下。 ## 用法 ``` provenant --json-pp [OPTIONS] ... ``` 至少需要一个输出选项。 要查看完整的 CLI 用法,请运行: ``` provenant --help ``` 有关引导式工作流和重要的标志组合,请参阅 [CLI 指南](docs/CLI_GUIDE.md)。 ### 示例 ``` provenant --json-pp scan-results.json --license --package ~/projects/my-codebase --ignore "*.git*" --ignore "target/*" --ignore "node_modules/*" ``` 使用 `-` 作为 `FILE` 将输出流写入标准输出,例如 `--json-pp -`。 在单次运行中可以使用多个输出标志,这与 ScanCode CLI 的行为相匹配。 当使用 `--from-json` 时,您可以传入多个 JSON 输入。原生目录扫描也支持多个输入路径,这与 ScanCode 的公共前缀行为相匹配。 持久化缓存是可选的。使用 `--cache scan-results` 可启用扫描结果缓存。还可以通过 `PROVENANT_CACHE` 环境变量或 `--cache-dir` 来控制缓存根目录。 有关生成的包格式支持矩阵,请参阅 [支持的格式](docs/SUPPORTED_FORMATS.md)。 ## 性能 `Provenant` 专为高效的原生扫描和并行处理而设计。有关实现细节,请参阅 [架构:性能特征](docs/ARCHITECTURE.md#performance-characteristics)。 ## 输出格式 已实现的输出格式包括: - JSON,包括与 ScanCode 兼容的输出 - YAML - JSON Lines - Debian copyright - SPDX,Tag-Value 和 RDF/XML - CycloneDX,JSON 和 XML - HTML 报告 - 自定义模板渲染 输出架构和兼容性方法记录在以下文档中: - [架构](docs/ARCHITECTURE.md) - [测试策略](docs/TESTING_STRATEGY.md) ## 文档 - **[文档索引](docs/DOCUMENTATION_INDEX.md)** - 浏览文档的最佳起点 - **[CLI 指南](docs/CLI_GUIDE.md)** - 常见工作流和重要的标志组合 - **[架构](docs/ARCHITECTURE.md)** - 系统设计、处理流水线和设计决策 - **[支持的格式](docs/SUPPORTED_FORMATS.md)** - 生成的包生态系统和文件格式支持矩阵 - **[如何添加解析器](docs/HOW_TO_ADD_A_PARSER.md)** - 添加新解析器的分步指南 - **[测试策略](docs/TESTING_STRATEGY.md)** - 测试方法和准则 - **[ADRs](docs/adr/)** - 架构决策记录 - **[超越对等的改进](docs/improvements/)** - Rust 超越原始 Python 版本的功能 ``` cargo run --manifest-path xtask/Cargo.toml --bin generate-index-artifact ``` 对于常规的本地开发,`npm run setup` 是一键式启动路径。如果您需要手动重新安装钩子,可以使用 `npm run hooks:install`。这些设置和辅助命令目前是面向 shell 的,因此 Windows 贡献者最好在 WSL2 中运行它们。 ## 致谢 `Provenant` 是 [ScanCode Toolkit](https://github.com/aboutcode-org/scancode-toolkit) 的一个独立 Rust 重写版本。它使用 nexB Inc. 和 AboutCode 社区的上游 ScanCode Toolkit 项目作为兼容性、行为和一致性验证的参考。我们感谢 nexB Inc. 和 AboutCode 社区提供的参考实现及其背后广泛的许可证和版权研究。请参阅 [`NOTICE`](NOTICE) 以了解适用于本代码仓库中包含的材料以及包含 ScanCode 派生数据的发行版的保留上游归属声明。 ## 许可证 Copyright (c) 2026 Provenant contributors. Provenant 项目代码根据 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) 获得许可。有关包含的 ScanCode Toolkit 材料的保留上游归属声明,请参阅 [`NOTICE`](NOTICE)。
标签:CycloneDX, DevSecOps, Provenant, Rust, ScanCode, SPDX, WebSocket, 上游代理, 云安全监控, 代码安全, 依赖分析, 元数据提取, 包管理, 可视化界面, 威胁情报, 安全扫描, 并行处理, 开发者工具, 开源协议, 时序注入, 漏洞枚举, 网络流量审计, 聊天机器人, 许可证检测, 进程保护, 通知系统, 静态分析