4 个版本 (2 个破坏性更改)
0.3.0 | 2022 年 7 月 8 日 |
---|---|
0.2.0 | 2022 年 7 月 7 日 |
0.1.1 | 2022 年 7 月 6 日 |
0.1.0 | 2022 年 7 月 6 日 |
#456 in Cargo 插件
986 每月下载量
12KB
181 行
cargo-cranky
我希望能够检查一个文件,指定我的整个 Cargo 仓库的 Rust lints,并将其应用于所有包、库、二进制文件和示例。
仅使用 Rust/Cargo/Clippy 来做这件事可能有点麻烦。 cargo-cranky
使其变得更简单!
cargo-cranky
是 cargo clippy
的包装器;它检查你的 Cranky.toml
配置文件,并构建必要的 cargo clippy
命令行。大多数参数都传递给了 clippy,所以它应该在 clippy 工作的所有上下文中都有效(IDEs、CI 脚本等)。
例如,如果 Cranky.toml
包含以下内容
warn = [
"clippy::empty_structs_with_brackets",
"clippy::cast_possible_truncation",
]
并且我运行 cargo cranky
,我会得到那些额外的 lint
warning: found empty brackets on struct declaration
--> src/main.rs:11:12
|
11 | struct Unit {}
| ^^^
warning: casting `u64` to `u8` may truncate the value
--> src/main.rs:23:9
|
23 | x as u8
这完全等同于手动运行 cargo clippy
并传递额外的参数 --warn clippy::empty_structs_with_brackets
和 --warn clippy::cast_possible_truncation
。
你可以在 clippy 文档 中找到一些对你项目有用的 clippy lints。我建议浏览“pedantic”和“restriction”组。
安装
cargo安装 cargo-cranky
配置
在项目树的顶部创建一个名为 Cranky.toml
的文件。该文件可以包含包含 clippy lint 名称数组的键 allow
、warn
或 deny
。
示例
deny = [
# My crate should never need unsafe code.
"unsafe_code",
]
warn = [
"clippy::empty_structs_with_brackets",
"clippy::cast_possible_truncation",
]
allow = [
"clippy::double_comparisons",
]
注意:在重叠的情况下,allow
总是会覆盖 warn
,而 warn
又会覆盖 deny
。这些字段在 Cranky.toml
中的顺序没有影响。
常见问题解答
我能否指定非Clippy的lints?
是的!例如,尝试使用unsafe_code
或missing_docs
。
注意:应该使用长语法来指定Clippy的lints,例如clippy::some_lint_name
。如果缺少前缀,Clippy将发出警告。
它与vscode兼容吗?
是的!只需在“保存时检查:命令”设置中输入cranky
,或者将其放入settings.json
{
"rust-analyzer.checkOnSave.command": "cranky"
}
将其设置为“检查”(或“clippy”)以返回到之前的行为。
这是鲁莽的或者非惯用的吗?
这取决于你如何使用它。如果你的目标是强制执行非惯用的编码风格,那可能不是一个好主意。
如果你想要禁用默认启用的lints,最好使用源文件中的#[allow(clippy::some_lint)]
语法,因为这样你可以添加注释来解释你的理由。
此工具的主要目标是使启用额外的Clippy lints变得更容易,这些lints可以改进代码的可维护性或安全性(即clippy::cast_possible_truncation
)。
我有投诉建议!
如果您有可以使此工具变得更好的想法,请在GitHub上提交问题。
依赖项
~0.6–1.2MB
~28K SLoC