Clippy:弃用`feature = "cargo-clippy"`

原文链接

2024年2月28日 · Clippy团队

自从Clippy v0.0.97版本以及之前通过rustup提供以来,当使用cargo clippy对你的代码进行lint时,Clippy隐式地添加了一个feature = "cargo-clippy"配置。

回到那时(2016年),这是必要的,以允许、警告或拒绝Clippy lint使用属性:

rust 复制代码
#[cfg_attr(feature = "cargo-clippy", allow(clippy_lint_name))]

长时间以来,这样做已经不再必要。今天,Clippy用户将使用带有clippy::前缀的工具lint属性来设置lint级别:

rust 复制代码
#[allow(clippy::lint_name)]

隐式的feature = "cargo-clippy"仅为了向后兼容而保留,但将在即将到来的夜间构建中被弃用,并且之后在1.78.0版本中弃用。

替代方案 由于依赖Clippy的条件编译是一个罕见的用例,我们将提供一个替代方案。因此在未来(1.78.0版本)你将能够使用:

rust 复制代码
#[cfg(clippy)]

过渡 如果你只使用稳定的工具链,你可以等到Rust 1.78.0(2024-05-02)发布后再进行过渡。

如果你的代码库中有feature = "cargo-clippy"的实例,你将从最新的夜间构建Clippy中的新lint clippy::deprecated_clippy_cfg_attr看到一个警告。这个lint可以自动修复你的代码。因此,如果你看到这个lint触发,只需运行:

shell 复制代码
cargo clippy --fix -- -Aclippy::all -Wclippy::deprecated_clippy_cfg_attr

这将修复你代码中的所有实例。

此外,检查你的.cargo/config文件是否有:

toml 复制代码
[target.'cfg(feature = "cargo-clippy")']
rustflags = ["-Aclippy::..."]

如果你有这个配置,你将需要自己更新它,要么将其更改为cfg(clippy),要么利用这个机会直接在Cargo.toml中设置lint级别。

弃用的动机 目前,有一个测试的呼吁,为了稳定在编译时检查条件编译,即cargo check -Zcheck-cfg。如果我们保留feature = "cargo-clippy"配置,用户将开始在他们的feature = "cargo-clippy"条件上看到很多警告。为了解决这个问题,他们要么需要允许lint,要么必须在他们的Cargo.toml中添加一个虚拟特性来消除这些警告:

toml 复制代码
[features]
cargo-clippy = []

我们认为这不会对用户友好,因此决定弃用隐式的feature = "cargo-clippy"配置,并用clippy配置替换它。

你很可能甚至不知道Clippy隐式设置了这个配置(这不是一个Cargo特性)。这是有意的,因为我们很久以前就停止宣传和记录这个了。

相关推荐
DARLING Zero two♡7 分钟前
Profile-Guided Optimization(PGO):Rust 性能优化的终极武器
开发语言·性能优化·rust
没逻辑14 小时前
高性能计算的利器:Rust中的SIMD实战指南
后端·rust
盒马盒马15 小时前
Rust:复合类型
开发语言·rust
摘星编程18 小时前
深入 Actix-web 源码:解密 Rust Web 框架的高性能内核
开发语言·前端·rust·actixweb
Momentary_SixthSense20 小时前
rust笔记
开发语言·笔记·rust
lpfasd12321 小时前
从 Electron 转向 Tauri:用 Rust 打造更轻、更快的桌面应用
javascript·rust·electron
RustCoder1 天前
基于 Rust 的 Rustls 性能优于 OpenSSL 和 BoringSSL
物联网·安全·rust
努力进修1 天前
Rust 语言入门基础教程:从环境搭建到 Cargo 工具链
开发语言·后端·rust
ai安歌2 天前
【Rust编程:从新手到大师】Rust变量深度详解
rust
G_dou_2 天前
智能指针完全指南
windows·rust