# Clippy
[![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)
[![License: MIT OR Apache-2.0](https://img.shields.io/crates/l/clippy.svg)](#license)
A collection of lints to catch common mistakes and improve your [Rust](https://github.com/rust-lang/rust) code.
[There are over 700 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)
Lints are divided into categories, each with a default [lint level](https://doc.rust-lang.org/rustc/lints/levels.html).
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 features[^restrict] | 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](https://github.com/rust-lang/rust-clippy/issues) 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.
[^restrict]: 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).
[`clippy::else_if_without_else`]: https://rust-lang.github.io/rust-clippy/master/index.html#else_if_without_else
[`clippy::todo`]: https://rust-lang.github.io/rust-clippy/master/index.html#todo
[`clippy::unwrap_used`]: https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_used
---
Table of contents:
* [Usage instructions](#usage)
* [Configuration](#configuration)
* [Contributing](#contributing)
* [License](#license)
## Usage
Below are instructions on how to use Clippy as a cargo subcommand,
in projects that do not use cargo, or in Travis CI.
### As a cargo subcommand (`cargo clippy`)
One way to use Clippy is by installing Clippy through rustup as a cargo
subcommand.
#### Step 1: Install Rustup
You can install [Rustup](https://rustup.rs/) on supported platforms. This will help
us install Clippy and its dependencies.
If you already have Rustup installed, update to ensure you have the latest
Rustup and compiler:
```terminal
rustup update
```
#### Step 2: Install Clippy
Once you have rustup and the latest stable release (at least Rust 1.29) installed, run the following command:
```terminal
rustup component add clippy
```
If it says that it can't find the `clippy` component, please run `rustup self update`.
#### Step 3: Run Clippy
Now you can run Clippy by invoking the following command:
```terminal
cargo clippy
```
#### Automatically applying Clippy suggestions
Clippy can automatically apply some lint suggestions, just like the compiler. Note that `--fix` implies
`--all-targets`, so it can fix as much code as it can.
```terminal
cargo clippy --fix
```
#### Workspaces
All the usual workspace options should work with Clippy. For example the following command
will run Clippy on the `example` crate:
```terminal
cargo clippy -p example
```
As with `cargo check`, this includes dependencies that are members of the workspace, like path dependencies.
If you want to run Clippy **only** on the given crate, use the `--no-deps` option like this:
```terminal
cargo clippy -p example -- --no-deps
```
### Using `clippy-driver`
Clippy can also be used in projects that do not use cargo. To do so, run `clippy-driver`
with the same arguments you use for `rustc`. For example:
```terminal
clippy-driver --edition 2018 -Cpanic=abort foo.rs
```
Note that `clippy-driver` is designed for running Clippy only and should not be used as a general
replacement for `rustc`. `clippy-driver` may produce artifacts that are not optimized as expected,
for example.
### Travis CI
You can add Clippy to Travis CI in the same way you use it locally:
```yaml
language: rust
rust:
- stable
- beta
before_script:
- rustup component add clippy
script:
- cargo clippy
# if you want the build job to fail when encountering warnings, use
- cargo clippy -- -D warnings
# in order to also check tests and non-default crate features, use
- cargo clippy --all-targets --all-features -- -D warnings
- cargo test
# etc.
```
Note that adding `-D warnings` will cause your build to fail if **any** warnings are found in your code.
That includes warnings found by rustc (e.g. `dead_code`, etc.). If you want to avoid this and only cause
an error for Clippy warnings, use `#![deny(clippy::all)]` in your code or `-D clippy::all` on the command
line. (You can swap `clippy::all` with the specific lint category you are targeting.)
## Configuration
### Allowing/denying lints
You can add options to your code to `allow`/`warn`/`deny` Clippy lints:
* the whole set of `Warn` lints using the `clippy` lint group (`#![deny(clippy::all)]`).
Note that `rustc` has additional [lint groups](https://doc.rust-lang.org/rustc/lints/groups.html).
* all lints using both the `clippy` and `clippy::pedantic` lint groups (`#![deny(clippy::all)]`,
`#![deny(clippy::pedantic)]`). Note that `clippy::pedantic` contains some very aggressive
lints prone to false positives.
* only some lints (`#![deny(clippy::single_match, clippy::box_vec)]`, etc.)
* `allow`/`warn`/`deny` can be limited to a single function or module using `#[allow(...)]`, etc.
Note: `allow` means to suppress the lint for your code. With `warn` the lint
will only emit a warning, while with `deny` the lint will emit an error, when
triggering for your code. An error causes clippy to exit with an error code, so
is useful in scripts like CI/CD.
If you do not want to include your lint levels in your code, you can globally
enable/disable lints by passing extra flags to Clippy during the run:
To allow `lint_name`, run
```terminal
cargo clippy -- -A clippy::lint_name
```
And to warn on `lint_name`, run
```terminal
cargo clippy -- -W clippy::lint_name
```
This also works with lint groups. For example, you
can run Clippy with warnings for all lints enabled:
```terminal
cargo clippy -- -W clippy::pedantic
```
If you care only about a single lint, you
没有合适的资源?快使用搜索试试~ 我知道了~
rust-clippy-master.zip
共2000个文件
rs:783个
stderr:694个
fixed:301个
0 下载量 174 浏览量
2024-04-16
10:51:48
上传
评论
收藏 3.51MB ZIP 举报
温馨提示
一组用于捕获常见错误并提升Rust代码质量的 lint 工具集合
资源推荐
资源详情
资源评论
收起资源包目录
rust-clippy-master.zip (2000个子文件)
COPYRIGHT 412B
.editorconfig 439B
needless_lifetimes.fixed 13KB
use_self.fixed 12KB
manual_clamp.fixed 12KB
eta.fixed 11KB
unnecessary_lazy_eval.fixed 10KB
clear_with_drain.fixed 9KB
explicit_auto_deref.fixed 8KB
useless_conversion.fixed 8KB
search_is_some_fixable_none.fixed 7KB
needless_borrows_for_generic_args.fixed 7KB
search_is_some_fixable_some.fixed 7KB
default_numeric_fallback_i32.fixed 7KB
iter_filter_is_some.fixed 6KB
doc-fixable.fixed 6KB
assigning_clones.fixed 6KB
redundant_guards.fixed 6KB
question_mark.fixed 6KB
identity_op.fixed 6KB
new_without_default.fixed 5KB
needless_borrow.fixed 5KB
needless_return.fixed 5KB
needless_match.fixed 5KB
unnecessary_cast.fixed 5KB
single_match.fixed 5KB
vec.fixed 5KB
len_zero.fixed 5KB
derivable_impls.fixed 5KB
implied_bounds_in_impls.fixed 4KB
let_and_return.fixed 4KB
format_args.fixed 4KB
str_split.fixed 4KB
eager_transmute.fixed 4KB
ptr_as_ptr.fixed 4KB
rename.fixed 4KB
manual_filter_map.fixed 4KB
manual_unwrap_or.fixed 4KB
needless_borrow_pat.fixed 4KB
unnecessary_iter_cloned.fixed 4KB
explicit_iter_loop.fixed 4KB
missing_asserts_for_indexing.fixed 4KB
single_match_else.fixed 4KB
implicit_saturating_sub.fixed 4KB
manual_find_fixable.fixed 4KB
derive_partial_eq_without_eq.fixed 4KB
transmutes_expressible_as_ptr_casts.fixed 3KB
try_err.fixed 3KB
manual_filter.fixed 3KB
significant_drop_tightening.fixed 3KB
seek_to_start_instead_of_rewind.fixed 3KB
manual_find_map.fixed 3KB
box_default.fixed 3KB
collapsible_if.fixed 3KB
bool_comparison.fixed 3KB
expect_fun_call.fixed 3KB
misnamed_getters.fixed 3KB
get_unwrap.fixed 3KB
manual_map_option.fixed 3KB
match_str_case_mismatch.fixed 3KB
unnecessary_sort_by.fixed 3KB
ref_as_ptr.fixed 3KB
filter_map_bool_then.fixed 3KB
nonminimal_bool_methods.fixed 3KB
needless_question_mark.fixed 3KB
needless_borrowed_ref.fixed 3KB
default_constructed_unit_structs.fixed 3KB
implicit_clone.fixed 3KB
needless_collect.fixed 3KB
use_self_trait.fixed 3KB
match_ref_pats.fixed 3KB
unused_enumerate_index.fixed 3KB
print_literal.fixed 3KB
non_canonical_partial_ord_impl.fixed 2KB
invalid_null_ptr_usage.fixed 2KB
semicolon_if_nothing_returned.fixed 2KB
trait_duplication_in_bounds.fixed 2KB
into_iter_on_ref.fixed 2KB
filter_map_identity.fixed 2KB
fixable.fixed 2KB
unwrap_used.fixed 2KB
write_literal.fixed 2KB
blocks_in_conditions.fixed 2KB
iter_overeager_cloned.fixed 2KB
missing_transmute_annotations.fixed 2KB
format.fixed 2KB
write_with_newline.fixed 2KB
excessive_precision.fixed 2KB
redundant_pub_crate.fixed 2KB
implicit_return.fixed 2KB
std_instead_of_core.fixed 2KB
extra_unused_type_parameters.fixed 2KB
option_map_unit_fn_fixable.fixed 2KB
iter_with_drain.fixed 2KB
print_with_newline.fixed 2KB
unnecessary_def_path.fixed 2KB
min_rust_version.fixed 2KB
manual_let_else_question_mark.fixed 2KB
map_flatten_fixable.fixed 2KB
eprint_with_newline.fixed 2KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
神气仙人
- 粉丝: 2073
- 资源: 101
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- redis-win-2.8.9,redis-win-2.8.9
- Servlet和JDBC实现三层架构
- Appium-Inspector-2024.6.1-win
- Screenshot_2024-06-14-21-22-39-202_net.csdn.csdnplus.jpg
- Appium-Server-GUI-windows-1.22.3-4
- 基于C语言+python实现的永磁同步电机矢量控制算法仿真+源码(毕业设计&课程设计&项目开发)
- APKPure_v3.20.05_apkpure.com.apk
- HKJC_AOSBS_PROD_L2.7R2Q_Build8172.apk
- jetson官网下载的官方资料
- 小游戏的java程序开发
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功