liyun6666/moonseal

GitHub: liyun6666/moonseal

MoonSeal 是一个 MoonBit 原生的发布就绪审计与 CycloneDX SBOM 生成工具,解决通用扫描工具无法解析 MoonBit 模块格式和包坐标的问题。

Stars: 0 | Forks: 0

# MoonSeal MoonSeal 是一个原生的 MoonBit 发布就绪审计工具和 CycloneDX SBOM 生成器。它能够解析 MoonBit 清单文件和 Mooncakes 包坐标, 将仓库元数据转化为可操作的审计发现和标准的软件物料清单。 **中文简介:** MoonSeal 是面向 MoonBit 项目的软件供应链清单与开源合规 工具。它可以检查项目发布条件、许可证声明和依赖信息,并生成 CycloneDX 1.6 SBOM。 ## 为什么选择 MoonSeal? 通用扫描工具无法理解 MoonBit 当前的 `moon.mod` 格式、 其旧版的 `moon.mod.json` 格式,或是 `pkg:mooncakes` 包 URL。MoonSeal 提供了一个轻量、确定性的核心库,以及专为 MoonBit 仓库和 CI 流水线 设计的实用 CLI。 当前功能: - 解析当前及旧版 MoonBit 模块清单。 - 提取模块元数据和 Mooncakes 依赖。 - 验证常见的 SPDX 标识符和复合表达式。 - 检测常见的许可证文本及声明不匹配问题。 - 检查 README、LICENSE、仓库 URL、CI、更新日志及源码是否存在。 - 强制执行 `moonseal-policy.json` 中的仓库特定策略。 - 分析依赖锁定、坐标、重复项及版本冲突。 - 生成文本、JSON、Markdown 和 SARIF 审计报告。 - 生成确定性的 CycloneDX 1.6 SBOM 文档。 - 对比审计基线并识别回归问题。 - 生成 in-toto/SLSA 来源声明。 - 在 WebAssembly 后端上运行;在可用的情况下支持原生构建。 ## 快速开始 安装 [MoonBit 工具链](https://www.moonbitlang.com/download),克隆本 仓库,然后运行: ``` moon update moon run cmd/main scan . ``` 示例输出: ``` MoonSeal audit: liyun6666/moonseal Score: 100/100 Source: 4362 MoonBit lines | 0 errors | 0 warnings READY No release-readiness issues found. ``` 生成 CycloneDX SBOM: ``` moon run cmd/main sbom . -o moonseal.cdx.json ``` 有关从此仓库生成并经过 schema 验证的示例,请参阅 [`examples/moonseal.cdx.json`](examples/moonseal.cdx.json)。 将 MoonSeal 用作阻塞性 CI 检查: ``` moon run cmd/main check . ``` 获取机器可读报告: ``` moon run cmd/main scan . --json ``` 生成 Markdown 构建摘要: ``` moon run cmd/main scan . --markdown ``` 为代码扫描平台生成 SARIF 报告: ``` moon run cmd/main scan . --sarif ``` 分析直接的 Mooncakes 依赖: ``` moon run cmd/main dependencies . ``` 强制执行已提交的仓库策略: ``` moon run cmd/main policy . --policy moonseal-policy.json ``` ## 命令 | 命令 | 用途 | | --- | --- | | `moonseal scan [PATH] [--json \| --markdown \| --sarif]` | 审计项目并打印发现的问题 | | `moonseal check [PATH]` | 审计并在存在阻塞性发现时报错退出 | | `moonseal sbom [PATH] [-o FILE]` | 生成 CycloneDX 1.6 SBOM | | `moonseal dependencies [PATH] [--json]` | 分析依赖元数据 | | `moonseal policy [PATH] [--policy FILE] [--json]` | 强制执行仓库策略 | | `moonseal help` | 显示命令帮助 | 在开发过程中,请使用 `moon run cmd/main` 替代 `moonseal`。 ## 审计规则 | 代码 | 严重程度 | 检查项 | | --- | --- | --- | | MS001 | Error | 模块名称是否存在 | | MS002 | Error | 模块版本是否存在 | | MS003 | Error | SPDX 许可证声明是否存在 | | MS004 | Error | SPDX 表达式是否被识别 | | MS005 | Warning | 仓库 URL 是否存在 | | MS006 | Error | License 文件是否存在 | | MS007 | Error | README 是否存在 | | MS008 | Warning | GitHub Actions 工作流是否存在 | | MS009 | Warning | 更新日志是否存在 | | MS010 | Info | `.gitignore` 是否存在 | | MS011 | Error | 声明的与检测到的许可证是否一致 | | MS012 | Warning | 许可证文本能否被识别 | | MS013 | Error | MoonBit 源码是否存在 | | MS014 | Warning | 仓库 URL 是否使用受认可的 Git 传输协议 | MoonSeal 提供的是工程层面的信号,而非法律建议。通过的审计报告 不能替代法律审查。 ## 库 API 核心包没有文件系统副作用。其主要公开函数包括: - `parse_manifest(path, text)` - `normalize_license(identifier)` - `valid_spdx(expression)` - `detect_license(text)` - `audit(facts)` - `evaluate_policy(policy, facts, report)` - `analyze_dependencies(project)` - `render_text(report)`, `render_json(report)`, 和 `render_sarif(report)` - `cyclonedx(project)` 和 `cyclonedx_string(project)` - `compare_reports(previous, current)` - `provenance(project, options)` 有关包边界的说明,请参阅[架构指南](docs/ARCHITECTURE.md)。 ## 开发与测试 ``` moon fmt moon check --target wasm -d moon test --target wasm moon build --target wasm --release moon run --target wasm cmd/main check . ``` 测试涵盖了两种清单格式、依赖提取、SPDX 验证、 许可证检测、审计评分、报告生成和 CycloneDX 输出。 有关当前的交付边界,请参阅 [MVP 状态与复现检查清单](docs/MVP_STATUS.md)。 ## 竞赛 MoonSeal 是为 2026 MoonBit 国产基础软件生态开源大赛 8 月黑客松 开发的。单页中文申报书可在 [`docs/PROJECT_PROPOSAL.md`](docs/PROJECT_PROPOSAL.md) 中查看。 ## 许可证 Apache-2.0。请参阅 [LICENSE](LICENSE)。
标签:AI工具, CycloneDX, MoonBit, SBOM生成, 云安全监控, 开源合规, 知识图谱, 聊天机器人, 静态分析