mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-12-22 11:03:16 +00:00
.. | ||
continuous_integration | ||
development | ||
configuration.md | ||
installation.md | ||
lint_configuration.md | ||
lints.md | ||
README.md | ||
SUMMARY.md | ||
usage.md |
Clippy
A collection of lints to catch common mistakes and improve your Rust code.
There are over 700 lints included in this crate!
Lints are divided into categories, each with a default lint
level. You can choose how
much Clippy is supposed to annoy help you by changing the lint level by
category.
Category | Description | Default level |
---|---|---|
clippy::all |
all lints that are on by default (correctness, suspicious, style, complexity, perf) | warn/deny |
clippy::correctness |
code that is outright wrong or useless | deny |
clippy::suspicious |
code that is most likely wrong or useless | warn |
clippy::style |
code that should be written in a more idiomatic way | warn |
clippy::complexity |
code that does something simple but in a complex way | warn |
clippy::perf |
code that can be written to run faster | warn |
clippy::pedantic |
lints which are rather strict or have occasional false positives | allow |
clippy::restriction |
lints which prevent the use of language and library features1 | allow |
clippy::nursery |
new lints that are still under development | allow |
clippy::cargo |
lints for the cargo manifest | allow |
More to come, please file an issue if you have ideas!
The restriction
category should, emphatically, not be enabled as a whole. The contained
lints may lint against perfectly reasonable code, may not have an alternative suggestion,
and may contradict any other lints (including other categories). Lints should be considered
on a case-by-case basis before enabling.
-
Some use cases for
restriction
lints include:- Strict coding styles (e.g.
clippy::else_if_without_else
). - Additional restrictions on CI (e.g.
clippy::todo
). - Preventing panicking in certain functions (e.g.
clippy::unwrap_used
). - Running a lint only on a subset of code (e.g.
#[forbid(clippy::float_arithmetic)]
on a module).
- Strict coding styles (e.g.