Clippy 的 Lints
Clippy 提供了一系列额外的检查项,以帮助其用户编写更正确和符合语言习惯的 Rust 代码。所有检查项的完整列表,可以按类别、检查项级别或关键字进行过滤,可以在 Clippy 检查项文档 中找到。
本章将概述不同的检查项类别,它们提供哪种类型的检查项,以及当您看到该类别中的检查项时,建议采取的操作。有关示例,请参阅 Clippy 检查项文档 并按类别过滤。
不同的检查项组在 Clippy 1.0 RFC 中定义。
正确性
clippy::correctness
组是 Clippy 中唯一的默认拒绝检查项组,当触发时会中止编译。这是有充分理由的:如果您看到 correctness
检查项,这意味着您的代码完全错误或无用,您应该尝试修复它。
此类别中的检查项经过仔细挑选,应避免误报。因此,不建议仅仅 #[allow]
这些检查项。
可疑
clippy::suspicious
组与正确性检查项类似,因为它包含在真正可疑且应修复的代码上触发的检查项。与正确性检查项相反,可能会出现被检查的代码是故意这样编写的情况。
仍然建议修复由此组中的检查项检查的代码,而不是 #[allow]
检查项。如果您有意编写了违反检查项的代码,您应该具体且局部地 #[allow]
该检查项,并给出代码按编写方式是正确的原因。
复杂性
clippy::complexity
组提供了关于如何简化代码的建议。它主要关注可以用更短、更易读的方式编写的代码,同时保留语义。
如果您看到复杂性检查项,通常意味着您可以删除或替换一些代码,建议这样做。但是,如果您出于某种表达原因需要更复杂的代码,建议在具体情况下允许复杂性检查项。
性能
clippy::perf
组为您提供关于如何提高代码性能的建议。这些检查项主要关于编译器无法轻易优化的代码,但必须以稍微不同的方式编写,以使优化器更容易工作。
性能检查项通常很容易应用,建议这样做。
风格
clippy::style
组主要关于编写符合语言习惯的代码。由于风格是主观的,因此此检查项组是 Clippy 中最主观的默认警告组。
如果您看到风格检查项,应用建议通常会使您的代码更易读且符合语言习惯。但是,因为我们知道这是主观的,所以可以随意在代码中散布 #[allow]
以允许风格检查项,或者如果您完全不同意建议的风格,可以在整个 crate 中 #![allow]
风格检查项。
吹毛求疵
clippy::pedantic
组使 Clippy 更加吹毛求疵。您可以使用 crate 的 lib.rs
/main.rs
中的 #![warn(clippy::pedantic)]
启用整个组。此检查项组适用于希望对其代码进行深入检查的 Clippy 高级用户。
注意: 与其启用整个组(像 Clippy 本身一样),您可能希望从吹毛求疵组中挑选检查项。
如果您启用此组,预计也会在整个代码中慷慨地使用 #[allow]
属性。此组中的检查项旨在吹毛求疵,有时误报是故意的,以防止漏报。
限制
clippy::restriction
组包含将限制您使用 Rust 语言某些部分的检查项。不建议启用整个组,而是挑选对您的代码库和用例有用的检查项。
注意: 如果 Clippy 在您的代码中找到
#![warn(clippy::restriction)]
属性,它会生成警告!
此组中的检查项将在某种程度上限制您。如果您为您的 crate 启用限制检查项,建议也修复此检查项触发的代码。但是,这些检查项在设计上非常严格,您可能希望在某些特殊情况下 #[allow]
它们,并添加注释说明原因。
Cargo
clippy::cargo
组为您提供关于如何改进您的 Cargo.toml
文件的建议。如果您想发布您的 crate 并且不确定您的 Cargo.toml
中是否包含所有有用的信息,这可能会特别有趣。