01-基础
3 分钟阅读
译文 · 基于 Clippy Documentation
基础
原文链接: https://doc.rust-lang.org/nightly/clippy/development/basics.html
本文说明参与 Clippy 开发所需的基础知识,包括如何构建与测试 Clippy 等。若要更深入地了解代码库,请参阅添加 Lint 或常用工具。
获取代码
首先确保已检出 Clippy 的最新版本。若这是你第一次参与 Clippy 开发,请先 fork 仓库,再用以下命令克隆:
| |
若你之前已克隆过 Clippy,请更新到最新版本:
| |
构建与测试
可以像其他 Rust 项目一样构建和测试 Clippy:
| |
由于 Clippy 测试套件很大,有一些命令只运行其中一部分测试:
| |
若 UI 测试 的输出与预期不符,可用以下命令更新参考文件:
| |
例如,当你修复 lint 错误信息中的拼写错误,或修改测试文件以添加测试用例时,就需要这样做。
注意: 该命令可能更新超出你预期的文件。此时请只提交你打算更新的文件。
cargo dev
Clippy 提供一些开发工具,让开发更便捷。这些工具通过 cargo dev 访问。可用工具如下。要了解更多信息,可对各命令加上 --help。
| |
更多关于 intellij 命令的用法与原因。
lintcheck
cargo lintcheck 会在一组固定 crate 上构建并运行 Clippy,并生成结果日志。你可以用 git diff 将更新后的日志与先前版本对比,查看你的 lint 对少量 crate 的影响。若添加了新 lint,请审查产生的警告,确保没有误报且建议有效。
更多细节请参阅工具 README。
PR
我们遵循 rustc 的无 merge commit 策略。参见 https://rustc-dev-guide.rust-lang.org/contributing.html#opening-a-pr。
常见缩写
| 缩写 | 含义 |
|---|---|
| UB | 未定义行为(Undefined Behavior) |
| FP | 误报(False Positive) |
| FN | 漏报(False Negative) |
| ICE | 编译器内部错误(Internal Compiler Error) |
| AST | 抽象语法树(Abstract Syntax Tree) |
| MIR | 中级中间表示(Mid-Level Intermediate Representation) |
| HIR | 高级中间表示(High-Level Intermediate Representation) |
| TCX | 类型上下文(Type context) |
这是 Clippy 开发中可能出现的缩写简明列表。更完整的通用列表见 rustc-dev-guide 术语表。若对某个缩写或含义不清楚,请随时提问。
从源码安装
若你正在开发 Clippy 并希望从源码安装,请按以下步骤操作:
在 Clippy 项目根目录运行以下命令,构建 Clippy 二进制并复制到工具链目录。默认会创建名为 clippy 的新工具链,其他选项见 cargo dev setup toolchain --help。
cargo dev setup toolchain
之后即可在新工具链下于任意项目中运行 cargo +clippy clippy。
cd my-project
cargo +clippy clippy
……或使用 clippy-driver:
clippy-driver +clippy <filename>
若不再需要该工具链,可用 rustup 卸载:
rustup toolchain uninstall clippy
请勿使用
cargo install --path . --force安装,因为这会覆盖 rustup 代理。也就是说,~/.cargo/bin/cargo-clippy与~/.cargo/bin/clippy-driver应是~/.cargo/bin/rustup的硬链接或软链接。可运行rustup update修复。