MoonProof:MoonBit 文档与教程示例的持续验证框架——把文档里的代码块抽出来,隔离编译运行,回答“我们文档里的例子还都对吗”
MoonBit 文档与教程示例的持续验证框架把文档、教程、源文件注释里的 MoonBit 代码块抽出来,在隔离环境中真实编译与运行,回答一个问题: "我们文档里的例子还都对吗?"
moon run --target native cmd/moonproof -- .
moon run --target native cmd/moonproof -- ./docs --verbose # 失败块附带具体编译错误,便于定位
moon run --target native cmd/moonproof -- --errorcodes <error_codes 根目录> # 官方错误码一致性验证
moon run --target native cmd/moonproof -- --errorcodes <error_codes 根目录> --out report.json # 同时导出 JSON 清单
moon run --target native cmd/moonproof -- . --out report.json # 文档验证结果导出 JSON
moon run --target native cmd/moonproof -- . --target wasm # 指定验证后端(wasm/js/native)
moon run --target native cmd/moonproof -- ./some-lib --dep moonbitlang/async # 注入第三方依赖,供示例 import注意:cmd/moonproof 是 native-only 的 CLI。moon run 必须带 --target native,否则 moon 默认选 wasm 后端会报 "does not support target backend 'wasm'"。
fn greet(name : String) -> String {
"hello, " + name
}moon run --target native cmd/moonproof -- --errorcodes <error_codes 根目录>| 标注 | 行为 |
|---|---|
| ```moonbit | 默认:编译验证(期望通过) |
| ```moonbit run | 编译 + 运行验证(pkgtype executable,真正执行 main) |
| ```moonbit no-check | 跳过,不参与验证 |
| ```moonbit should-fail | 期望编译失败(用于演示报错) |
cmd/moonproof CLI 入口:参数解析与分发(仅 native)
│
features/ 应用层
├── scan 扫描目录、筛选 .md / .mbt
├── run 编排:抽取 → 合成 → 执行 → 归因 → 报告
├── errorcodes 官方错误码一致性验证(error 断言失败 / fixed 断言通过)
└── report 结果数据结构与文本渲染
│
extract/ 抽取层(纯计算,全后端可移植)
├── markdown Markdown 代码块抽取 + 信息串解析
└── doccomment .mbt 文档注释抽取
│
synth/ 合成层(纯计算)
└── package 代码块 → 最小可编译包 + 行号映射表
│
diagnose/ 归因层(纯计算,全后端可移植)
└── classify 编译输出 → 失败类别
│
exec/ 执行层(仅 native,含 C FFI)
├── workspace 一次性隔离工作区(生命周期 / 配额 / 清理)
└── toolchain 调起 moon check / test / run,捕获输出,超时控制
│
platform/ 平台层(仅 native,含 C FFI)
├── proc 子进程执行 + 输出捕获 + 超时
└── fs 目录遍历、UTF-8 读写、删除保护MoonProof/
├── cmd/moonproof/ CLI 入口
├── extract/ Markdown / 文档注释代码块抽取
├── synth/ 代码块合成最小包
├── diagnose/ 失败归因分类
├── features/ scan / run / errorcodes / report
├── exec/ 隔离工作区 + 工具链执行
├── platform/ 子进程 / 文件系统(C FFI)
├── examples/sample.md 端到端样例文档
├── docs/ 真实验证报告(error-codes-report / tutorial-audit-report / eval-audit-report)
├── .github/workflows/ CI
├── moon.mod
└── README.mdInstall
Download zipMoonProof:MoonBit 文档与教程示例的持续验证框架——把文档里的代码块抽出来,隔离编译运行,回答“我们文档里的例子还都对吗”