rust-lang/rust-clippy
开发工具Rust 官方 lint 工具,提供 800 多条规则,覆盖正确性、风格、复杂度、性能,并支持 MSRV 检查。
项目介绍
Clippy 是 Rust 官方的 lint 集合,用来发现常见错误并把代码引向更符合习惯的写法。它内置 800 多条规则,按类别划分默认级别:correctness 默认 deny,suspicious、style、complexity、perf 默认 warn,而 pedantic、restriction、nursery、cargo 默认 allow;clippy::all 汇总所有默认开启的规则。规则可以按 crate、模块或函数设置 allow/warn/deny,也可以在命令行传入。
快速使用
通过 rustup 安装,然后作为 Cargo 子命令运行:
rustup update
rustup component add clippy
cd /path/to/your-crate
cargo clippy
如果提示找不到 clippy 组件,先运行 rustup self update 再重试。想自动应用可修复的建议,运行 cargo clippy --fix,注意 --fix 隐含 --all-targets。
在 workspace 中,cargo clippy -p example 会检查指定成员及其 workspace 依赖;只想检查该 crate 本身时,使用 cargo clippy -p example -- --no-deps。不使用 Cargo 的项目可以按 rustc 的参数调用 clippy-driver,但它不是 rustc 的通用替代品,可能产生优化程度不同的产物。
要让 CI 在发现 Clippy 问题时失败,可以在 crate 里加 #![deny(clippy::all)],或传 -D clippy::all;README 更推荐 CARGO_BUILD_WARNINGS=deny,因为它不会让构建缓存失效。Cargo 1.97 之前的常规做法是 -D warnings。
配置
部分规则可以在 clippy.toml 或 .clippy.toml 中用 variable = value 配置,例如 avoid-breaking-exported-api = false 或 disallowed-names = ["toto", "tata", "titi"]。列表型默认值可以用 .. 扩展,例如 disallowed-names = ["bar", ".."]。该文件不能用来 allow/deny 规则。想关闭诊断里的“for further information”链接,可设置 CLIPPY_DISABLE_DOCS_LINKS。
需要兼容旧版 Rust 的项目可以在 clippy.toml 中声明最低支持版本(msrv = "1.30.0"),或使用 Cargo.toml 的 rust-version,从而禁用针对新特性的规则。MSRV 可以省略补丁版本。也支持属性写法(#![clippy::msrv = "1.30.0"]),但需要启用不稳定的 custom_inner_attributes。
使用约束
Clippy 通过 rustup 安装,README 描述的组件安装流程要求至少 Rust 1.29。restriction 类别不应整体启用:其中的规则可能对合理代码报警、没有替代建议,或与其他规则冲突,应按需逐条选择。pedantic 规则较严格,偶尔会有误报。clippy-driver 只用于运行 Clippy,不应作为生产环境中的通用编译器替代品。
HotRepo 点评
该仓库在 2026-11-06 进入 HotRepo 的 Rust 日榜,位置为第 15,该快照记录 13,621 星、2,236 fork,当日新增 4 星。目前只有一条日榜记录,且没有全部语言日榜名次,只能说明它近期出现在 Rust 榜上,不足以判断趋势。技术上更值得注意的是规则覆盖面和各分类的默认策略:团队可以先用 cargo clippy 起步,再在 CI 中收紧为 deny-as-error,而不必引入另一套工具链。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。