@@ -19,21 +19,31 @@ You can choose how much Clippy is supposed to ~~annoy~~ help you by changing the
19
19
| ` clippy::complexity ` | code that does something simple but in a complex way | ** warn** |
20
20
| ` clippy::perf ` | code that can be written to run faster | ** warn** |
21
21
| ` clippy::pedantic ` | lints which are rather strict or have occasional false positives | allow |
22
+ | ` clippy::restriction ` | lints which prevent the use of language and library features[ ^ restrict ] | allow |
22
23
| ` clippy::nursery ` | new lints that are still under development | allow |
23
24
| ` clippy::cargo ` | lints for the cargo manifest | allow |
24
25
25
26
More to come, please [ file an issue] ( https://github.com/rust-lang/rust-clippy/issues ) if you have ideas!
26
27
27
- The [ lint list] ( https://rust-lang.github.io/rust-clippy/master/index.html ) also contains "restriction lints", which are
28
- for things which are usually not considered "bad", but may be useful to turn on in specific cases. These should be used
29
- very selectively, if at all.
28
+ The ` restriction ` category should, * emphatically* , not be enabled as a whole. The contained
29
+ lints may lint against perfectly reasonable code, may not have an alternative suggestion,
30
+ and may contradict any other lints (including other categories). Lints should be considered
31
+ on a case-by-case basis before enabling.
32
+
33
+ [ ^ restrict ] : Some use cases for ` restriction ` lints include:
34
+
35
+ * Strict coding styles.
36
+ * Additional restrictions on CI (e.g. ` clippy::todo ` ).
37
+ * Preventing panicking in certain functions (e.g. ` #[forbid(clippy::unwrap_used)] ` on a module or function).
38
+
39
+ ---
30
40
31
41
Table of contents:
32
42
33
- * [ Usage instructions] ( #usage )
34
- * [ Configuration] ( #configuration )
35
- * [ Contributing] ( #contributing )
36
- * [ License] ( #license )
43
+ * [ Usage instructions] ( #usage )
44
+ * [ Configuration] ( #configuration )
45
+ * [ Contributing] ( #contributing )
46
+ * [ License] ( #license )
37
47
38
48
## Usage
39
49
@@ -64,6 +74,7 @@ Once you have rustup and the latest stable release (at least Rust 1.29) installe
64
74
``` terminal
65
75
rustup component add clippy
66
76
```
77
+
67
78
If it says that it can't find the ` clippy ` component, please run ` rustup self update ` .
68
79
69
80
#### Step 3: Run Clippy
@@ -143,16 +154,16 @@ line. (You can swap `clippy::all` with the specific lint category you are target
143
154
144
155
You can add options to your code to ` allow ` /` warn ` /` deny ` Clippy lints:
145
156
146
- * the whole set of ` Warn ` lints using the ` clippy ` lint group (` #![deny(clippy::all)] ` ).
157
+ * the whole set of ` Warn ` lints using the ` clippy ` lint group (` #![deny(clippy::all)] ` ).
147
158
Note that ` rustc ` has additional [ lint groups] ( https://doc.rust-lang.org/rustc/lints/groups.html ) .
148
159
149
- * all lints using both the ` clippy ` and ` clippy::pedantic ` lint groups (` #![deny(clippy::all)] ` ,
160
+ * all lints using both the ` clippy ` and ` clippy::pedantic ` lint groups (` #![deny(clippy::all)] ` ,
150
161
` #![deny(clippy::pedantic)] ` ). Note that ` clippy::pedantic ` contains some very aggressive
151
162
lints prone to false positives.
152
163
153
- * only some lints (` #![deny(clippy::single_match, clippy::box_vec)] ` , etc.)
164
+ * only some lints (` #![deny(clippy::single_match, clippy::box_vec)] ` , etc.)
154
165
155
- * ` allow ` /` warn ` /` deny ` can be limited to a single function or module using ` #[allow(...)] ` , etc.
166
+ * ` allow ` /` warn ` /` deny ` can be limited to a single function or module using ` #[allow(...)] ` , etc.
156
167
157
168
Note: ` allow ` means to suppress the lint for your code. With ` warn ` the lint
158
169
will only emit a warning, while with ` deny ` the lint will emit an error, when
@@ -176,12 +187,14 @@ cargo clippy -- -W clippy::lint_name
176
187
177
188
This also works with lint groups. For example, you
178
189
can run Clippy with warnings for all lints enabled:
190
+
179
191
``` terminal
180
192
cargo clippy -- -W clippy::pedantic
181
193
```
182
194
183
195
If you care only about a single lint, you can allow all others and then explicitly warn on
184
196
the lint(s) you are interested in:
197
+
185
198
``` terminal
186
199
cargo clippy -- -A clippy::all -W clippy::useless_format -W clippy::...
187
200
```
0 commit comments