]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/book/src/README.md
bump version to 1.80.1+dfsg1-1~bpo12+pve1
[rustc.git] / src / tools / clippy / book / src / README.md
CommitLineData
923072b8
FG
1# Clippy
2
9c376795 3[![Clippy Test](https://github.com/rust-lang/rust-clippy/workflows/Clippy%20Test%20(bors)/badge.svg?branch=auto&event=push)](https://github.com/rust-lang/rust-clippy/actions?query=workflow%3A%22Clippy+Test+(bors)%22+event%3Apush+branch%3Aauto)
064997fb 4[![License: MIT OR Apache-2.0](https://img.shields.io/crates/l/clippy.svg)](https://github.com/rust-lang/rust-clippy#license)
923072b8
FG
5
6A collection of lints to catch common mistakes and improve your
7[Rust](https://github.com/rust-lang/rust) code.
8
c0240ec0 9[There are over 700 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)
923072b8
FG
10
11Lints are divided into categories, each with a default [lint
12level](https://doc.rust-lang.org/rustc/lints/levels.html). You can choose how
13much Clippy is supposed to ~~annoy~~ help you by changing the lint level by
14category.
15
16| Category | Description | Default level |
353b0b11 17|-----------------------|-------------------------------------------------------------------------------------|---------------|
923072b8
FG
18| `clippy::all` | all lints that are on by default (correctness, suspicious, style, complexity, perf) | **warn/deny** |
19| `clippy::correctness` | code that is outright wrong or useless | **deny** |
20| `clippy::suspicious` | code that is most likely wrong or useless | **warn** |
e8be2606 21| `clippy::style` | code that should be written in a more idiomatic way | **warn** |
923072b8
FG
22| `clippy::complexity` | code that does something simple but in a complex way | **warn** |
23| `clippy::perf` | code that can be written to run faster | **warn** |
e8be2606
FG
24| `clippy::pedantic` | lints which are rather strict or have occasional false positives | allow |
25| `clippy::restriction` | lints which prevent the use of language and library features[^restrict] | allow |
923072b8 26| `clippy::nursery` | new lints that are still under development | allow |
e8be2606
FG
27| `clippy::cargo` | lints for the cargo manifest | allow |
28
29More to come, please [file an issue](https://github.com/rust-lang/rust-clippy/issues) if you have ideas!
30
31The `restriction` category should, *emphatically*, not be enabled as a whole. The contained
32lints may lint against perfectly reasonable code, may not have an alternative suggestion,
33and may contradict any other lints (including other categories). Lints should be considered
34on a case-by-case basis before enabling.
923072b8 35
e8be2606
FG
36[^restrict]: Some use cases for `restriction` lints include:
37 - Strict coding styles (e.g. [`clippy::else_if_without_else`]).
38 - Additional restrictions on CI (e.g. [`clippy::todo`]).
39 - Preventing panicking in certain functions (e.g. [`clippy::unwrap_used`]).
40 - Running a lint only on a subset of code (e.g. `#[forbid(clippy::float_arithmetic)]` on a module).
923072b8 41
e8be2606
FG
42[`clippy::else_if_without_else`]: https://rust-lang.github.io/rust-clippy/master/index.html#else_if_without_else
43[`clippy::todo`]: https://rust-lang.github.io/rust-clippy/master/index.html#todo
44[`clippy::unwrap_used`]: https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_used