Checkers

正如该工具的名字 os-checker,它分为两部分, os 相关和 checker 相关。

其中 os 表示操作系统相关,主要针对操作系统组件库而设计。这意味,考虑的使用场景将比惯常的 Rust 项目更奇特,尤其在编译条件上,因为最底层的操作系统库必须严格地面向特定的机器。

而另一部分 checker,可能不仅仅局限于纯粹的程序检查。在 Rust 成熟的库中,可以观察到它们倾向于设置额外的 检查步骤,可能直接检查代码,也可能间接检查代码,或者甚至不检查代码。

因此 checker 一词在该工具中,具有非常宽泛的定义,它表示执行某些检查,帮助使用者从各种角度改进代码。

具体来说,checkers 包含以下几类:

checker 类别子类别工具重要程度亮点/论文issue说明
程序分析工具
👉静态检查工具
clippy⭐⭐⭐社区实践标准捕获常见的编码错误,并使代码更加地道
mirai⭐⭐论文#36具有非标注和标注两种检查方式
lockbud⭐⭐论文#34检查常见内存和并发错误
rap⭐⭐RAP book#138检查 UAF 和内存泄露
rudra⭐⭐论文#161检查 panic safety 和 Send/Sync Variance
👉动态检查工具
测试⭐⭐⭐工程实践标准cargo test 或者自定义测试?
miri⭐⭐⭐社区实践标准#12最高质量的 UB 检查结果
辅助检查工具
👉格式化检查fmt⭐⭐⭐社区实践标准#4检查未格式化的代码
👉供应链审查
audit⭐⭐⭐社区实践标准#42检查是否存在已报告安全漏洞的依赖版本
outdated#131尽可能使用最新的依赖
👉代码统计geiger#154尽可能警惕不安全代码
👉版本语义检查semver⭐⭐社区实践标准一个严肃的发版应该遵循语义化版本控制

注意:? 表示尚未实施,但计划一定会集成到 os-checker。

此外,os-checker 还应包括基础信息:

  • Cargo.toml:Package 维度;由许多工具读取和使用,应该正确维护
  • Github API:仓库维度