07-开发

参与 Clippy 开发入门

译文 · 基于 Clippy Documentation

开发

原文链接: https://doc.rust-lang.org/nightly/clippy/development/index.html

你好,Rustacean!如果你来到这里,多半是想通过贡献让 Clippy 变得更好。若是如此,欢迎加入本项目!

注意: 若你只是想使用 Clippy,从这里往后的内容对你没有帮助,请回到前面章节。

入门

若这是你第一次为 Clippy 做贡献,请先阅读基础文档。其中会说明如何获取源码、如何编译与测试。

初学者延伸阅读

若读者从未上过编译器与解释器相关课程,可能会疑惑为何 AST 层面只处理语言的语法;也可能不理解词法分析、语法分析、AST 等术语的含义。

本文档绝非编译器或语言设计的速成课。与 Rust 相关的细节,Rustc 开发指南 是更好的阅读选择。

语法与 AST 一章与 高级 IR(HIR) 一章,是理解本章所提概念的良好入门。

部分读者也可能觉得 Robert Nystrom 的 Crafting Interpreters 中导论章节有助于在回到 Rustc 指南之前,对编译型与解释型语言建立概览。

编写代码

完成基础环境搭建后,就可以开始动手了。

添加 lint 一章会带你走完向 Clippy 添加新 lint 的全过程。即便你只是想修复某个 lint,这一章也值得一读,因为它还涵盖如何测试 lint,并概述整体图景。

若要添加新 lint 或修改现有 lint(除 bug 修复外),也建议快速阅读 Clippy 1.0 RFC 中的稳定性保证与 lint 类别 部分。lint 类别在本书前文也有说明。

注意: 关于为 Clippy 做贡献的一些更高层事项,仍写在 CONTRIBUTING.md 中。其中部分内容会逐步迁入本书,例如:

  • 寻找可修复的问题
  • IDE 配置
  • Clippy 工作原理的高层概览
  • 分诊流程

01-基础

获取源码、编译与测试

02-添加 Lint

新增 lint 完整流程

03-定义 Lint

lint 定义与元数据

04-编写测试

Clippy lint 测试

05-Lint 遍历

lint pass 机制

06-发出 Lint

如何 emit lint

07-类型检查

类型检查相关 lint

08-Trait 检查

trait 检查相关 lint

09-方法检查

方法检查相关 lint

10-宏展开

宏展开相关 lint

11-常用工具

编写 lint 的常用工具

12-基础设施

Clippy 项目基础设施

13-提案

Clippy 设计提案

14-团队

Clippy 团队

最后修改 August 23, 2026: 更新 (499855b16)