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:仓库维度