目录

MoonInvariantKit

面向 MoonBit 的契约式校验与状态不变量基础库。

MoonInvariantKit 解决的是库作者和工具开发者经常遇到的基础问题:输入值是否在合法范围内,字符串是否为空,集合是否重复,序列是否单调,状态机定义是否存在未知状态或非确定性转移。项目把这些校验沉淀为 MoonBit 原生 API,并提供 JSON/Markdown 报告,方便 CLI、CI、文档和上层工具复用。

解决什么问题

很多项目会把校验逻辑散落在业务代码里,既难复用,也难统一输出错误报告。MoonInvariantKit 提供小而清晰的契约式检查能力,让数据模型、配置文件、状态机和公共 API 都可以用同一套结果对象表达“通过、警告、失败和证据”。

核心能力

  • Severity:信息、警告、错误三级严重度。
  • CheckResult:单条检查结果。
  • ContractReport:聚合报告、失败计数、最高严重度和摘要。
  • 标量不变量:整数范围、最小值、非空字符串、最大长度。
  • 集合不变量:非空、字符串唯一、单调非递减。
  • InvariantSuite:组合检查集合。
  • 状态机校验:初始状态、转移端点、同状态同事件唯一性。
  • JSON / Markdown 报告导出。

最小示例

let report = @inv.order_contract("order-1001", 2480, ["paid", "new"])
println(report.summary())
println(report.to_json())

运行

moon check --target all
moon test --target wasm
moon test --target wasm-gc
moon run cmd/main

与已有项目的区别

MoonInvariantKit 不是 schema 解析器、不是测试框架、不是策略引擎。它聚焦可嵌入的运行时契约检查、状态机一致性校验和结构化报告输出,可作为其他 MoonBit 库的底层质量组件。

项目边界

当前不解析 JSON Schema、OpenAPI 或外部 DSL,不做随机化测试,也不替代完整测试框架。后续可以扩展字段路径、嵌套对象校验、更多状态机分析和报告格式。

关于
295.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号