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特性)。这是有意的,因为我们很久以前就停止宣传和记录这个了。

相关推荐
niyongsheng13 小时前
多智能体连续时间内路径规划:AA-SIPP(m) 的 Rust 实现与算法
算法·rust·机器人
NetX行者17 小时前
Rust 初体验:一个全栈工程师的编译器“毒打“笔记
开发语言·笔记·rust
Amos_Web20 小时前
Rspack 源码解析(二十七):AsyncWasmParserAndGenerator 如何把二进制变成异步模块
前端·rust
敲代码的玉米C20 小时前
菜单栏做出来了,内存预算却没过:Hostwatch 开发手记(二)
rust
敲代码的玉米C20 小时前
电脑卡了,然后呢?我想用 Rust 做一个 Mac 诊断小工具
rust
GeminiJM1 天前
从 0 到 1 学 Codex 源码:Rust 基础(一)
rust·源码阅读·cargo·编程入门·codex
恋喵大鲤鱼1 天前
Rust 依赖包管理
rust
znnnk1 天前
2026 前端工程化新纪元:Rust 重塑工具链,AI Agent 接管流水线
前端·人工智能·rust
gopher95112 天前
RUST:序列化与反序列化 serde + derive 详解
开发语言·后端·rust
遇码2 天前
流式调用中途断连别直接报错:瞬态故障识别、退避重试与中文根因诊断的搭建方法
大数据·人工智能·ai·rust·数据分析·大模型·agent