#clippy #cargo #cargo-workspace #lint #wrapper #config-file #cranky

app cargo-cranky

为 clippy 提供易于配置的包装器

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 插件

Download history 484/week @ 2024-03-13 397/week @ 2024-03-20 351/week @ 2024-03-27 468/week @ 2024-04-03 597/week @ 2024-04-10 457/week @ 2024-04-17 327/week @ 2024-04-24 280/week @ 2024-05-01 247/week @ 2024-05-08 287/week @ 2024-05-15 378/week @ 2024-05-22 236/week @ 2024-05-29 286/week @ 2024-06-05 255/week @ 2024-06-12 211/week @ 2024-06-19 192/week @ 2024-06-26

986 每月下载量

MIT/Apache

12KB
181

cargo-cranky

我希望能够检查一个文件,指定我的整个 Cargo 仓库的 Rust lints,并将其应用于所有包、库、二进制文件和示例。

仅使用 Rust/Cargo/Clippy 来做这件事可能有点麻烦。 cargo-cranky 使其变得更简单!

cargo-crankycargo 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 名称数组的键 allowwarndeny

示例

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_codemissing_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