Clippy 开发

你好,Rust 爱好者!如果你来到这里,你可能对通过贡献代码来改进 Clippy 感兴趣。在这种情况下,欢迎加入这个项目!

注意:如果你只是对使用 Clippy 感兴趣,那么从这里开始就没有什么可看的了,你应该返回到前面的章节。

开始入门

如果这是你第一次为 Clippy 做出贡献,你应该首先阅读基础文档。这将解释如何获取源代码以及如何编译和测试代码的基础知识。

初学者额外阅读材料

如果这篇文档的读者从未上过关于编译器和解释器的课程,那么为什么 AST 层只处理语言的语法可能会令人困惑。一些读者甚至可能不理解词法分析、解析和 AST 的含义。

本文档绝不是关于编译器或语言设计的速成课程。对于与 Rust 特别相关的细节,Rustc 开发指南是更好的选择。

语法和 AST 章节和 高级中间表示 章节是对本章中提到的概念的很好的介绍。

一些读者可能会发现 Robert Nystrom 的《Crafting Interpreters》的导论章节,在跳回 Rustc 指南之前,对编译和解释语言进行有用的概述。

编写代码

如果你已经完成了基本设置,那么是时候开始动手了。

添加 lint 章节介绍了如何向 Clippy 添加新的 lint。如果你只想修复一个 lint,这也会很有趣,因为它还介绍了如何测试 lint,并给出了更宏观的概述。

如果你想添加新的 lint 或更改现有 lint(除了修复 bug 之外),最好快速阅读 稳定性保证lint 类别 部分的 Clippy 1.0 RFC。 lint 类别也在本书前面的章节中描述过。

注意:关于为 Clippy 做出贡献的一些更高层面的内容仍然在 CONTRIBUTING.md 文档中。其中一些内容会随着时间的推移转移到本书中,例如:

  • 寻找要修复的内容
  • IDE 设置
  • 关于 Clippy 工作原理的高级概述
  • 分类程序