#checking #statistics #report #collection #results #bad #targeting

app os-checker

Run a collection of checkers targeting Rust crates, and report bad checking results and statistics

3 unstable releases

new 0.2.0 Sep 8, 2024
0.1.1 Aug 3, 2024
0.1.0 Jul 27, 2024

#46 in Machine learning

Download history 93/week @ 2024-07-22 144/week @ 2024-07-29 12/week @ 2024-08-05 171/week @ 2024-09-02

172 downloads per month

MIT and GPL-3.0-or-later

135KB
3K SLoC

os checker

github github

【WIP】针对 Rust crates 的代码检查工具合集和应用,用以督促和提高代码库的质量。

(虽然工具名称暗示与操作系统相关,但仅仅是以它为背景而起的名字。)

计划/实施步骤:

二进制工具:os-checker

os-checker 生成最常见的 Rust 代码检查工具的运行结果报告。

工具/命令 重要性 说明 跟踪
cargo fmt 最高 代码格式化工具;良好的格式既赏心悦目,又防止无聊的提交改动或合并冲突 #4
cargo clippy 最高 捕获常见的编码错误,并使 Rust 代码更加地道
cargo miri 最高 UB 动态检查工具;由 rustc 核心开发者维护,所以几乎不存在误报 #12
cargo semver-checks 检查是否违反版本语义;一个严肃的发版应该遵循语义化版本控制 #3
lockbud 用于常见内存和并发错误的静态检查工具;见其论文

注意:虽然 miri 具有最高质量的 UB 检查效果,但是并不适用于所有代码库。

据我了解,由于 miri 是动态检查的,这意味着检查的前提是需要实际的代码执行路径,也就是需要运行二进制程序,比如 cargo miri run 或者 cargo miri test,这可能会排除某些操作系统的二进制文件,因为它们具有不寻常的、miri 不直接支持的目标平台(虽然 miri 被设计为跨平台,但可能需要一些工作才能适配成功)。

因此,我们还需要静态代码检查工具作为补充。这里暂时只选取 lockbud,它看上去更简单和实用。在安全检查工具方面,有一个完整的清单,可供以后添加。

其他

  • 目前仅支持 fmt/clippy/lockbud。其他功能正在开发中。
$ os-checker --help
Usage: os-checker <command> [<args>]

Run a collection of checkers targeting Rust crates, and report bad checking results and statistics.

Options:
  --help            display usage information

Commands:
  setup             Set up all rust-toolchains and checkers without running real
                    checkers.
  run               Run checkers on all repos.
  batch             Merge configs and split it into batches. `os-checker batch
                    --config a.json --config b.json --out-dir batch --size 10`
                    will yield multiple json configs in `batch/`, each
                    containing at most 10 repos.

Dependencies

~14–24MB
~336K SLoC