os-checker

对 Rust 编写的代码运行一系列检查工具,并对结果进行报告和统计,用以督促和提高代码库的质量。

虽然工具名称暗示与操作系统相关,但仅仅是以它为背景而起的名字。也就是说, os-checker 适用于任何 Rust 代码库。

os-checker 由以下部分组成:

工具仓库version功能
os-checker CLIos-checkergithub对目标仓库运行一系列检查工具,最终输出检查结果
os-checker-types Libos-checkergithubos-checker 公开可序列化和反序列的类型库
os-checker-database CLIos-checkergithub操作数据库文件并生成 WebUI 所需的基于目录的 JSONs
plugin Libplugingithub作为其他 plugin CLIs 的功能共享库
plugin-docs CLIplugin-docsgithub构建基于仓库最新提交的所有库的 rustdoc 文档
plugin-cargo CLIplugin-cargogithub解析仓库的 cargo 和 git 信息,比如每个包的信息
plugin-github-api CLIplugin-github-apigithub通过 API 获取仓库在 Github 上的基本信息
WebUIos-checker.github.io通过网页应用呈现检查结果,并部署到 Github Pages
databasedatabase存储检查结果和基础信息数据
Github Action Workflowos-checker-action在 Github 仓库 CI 中自动化部署上述工具
Docker 容器zjpzjp/os-checker基于 Docker 容器自动化部署上述工具
文档book介绍 os-checker

os-checker 目前设计为检查 Github 上的仓库代码,并且采用 Github Action 进行自动化检查。

已推出自己的 Github Action Workflow 和 Docker 镜像,来对上述工具进行自动化部署。

更多:面向使用者的 PPT | 工作原理

如何使用

对于 kern-crates

对于 kern-crates 的组件库,只需改动 repos.json 文件,等待 CI 检查完,最后前往 os-checker.github.io 网页查看检查结果。

如果你只想知道自己仓库的原始的检查输出,可查看 os-checker.github.io/user/repo,其中 user 为 Github 用户/组织名,repo 为仓库名。

如果你对 os-checker 有任何想法,无论关于 WebUI(界面需求) 还是 CLI(集成的检查工具),都可以发起 讨论

对于其他代码库

  1. 选择 Github Action 或者 Docker 方式,自行部署整个工具集(需要环境变量的配置)
  2. 编写一个 配置文件

配置示例

{
  // 描述你的 github 用户名和仓库(可以从浏览器网址栏截取 github.com 后的两部分)
  // 注意:目前只对默认分支进行检查
  "arceos-org/arceos": {},

  // 你的仓库中所有 packages 只针对 riscv64 平台

  "rel4team/sel4_cspace": {
    "targets": "riscv64gc-unknown-none-elf"
  }
}

你可以了解该配置文件的 具体设计

如果你的仓库比较奇特,需要特定的检查前提,不限于需要额外的 features/targets/cfg-flags/rustc-flags 等等编译条件,那么可以到 discussions 和我进行讨论,以帮助你编写检查配置。