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

相关推荐
张心独酌4 小时前
Rust开发案例库-静态服务器
服务器·开发语言·rust
liuxuzxx8 小时前
使用Rust构建MCP Server Stdio类型
rust·mcp
FAFU_kyp8 小时前
Rust 结构体(struct)
开发语言·后端·rust
分布式存储与RustFS9 小时前
MinIO社区版“躺平”,RustFS能接棒吗?
rust·开源项目·对象存储·企业存储·rustfs·minio国产化替代
rustfs9 小时前
使用 RustFS和 Arq,打造 PC 数据安全备份之道
分布式·docker·云原生·rust·开源
m0_748252389 小时前
Foundation 表格的基本用法
开发语言·后端·rust
古城小栈9 小时前
Rust unsafe 一文全功能解析
开发语言·后端·rust
Amos_Web10 小时前
Rust实战(五):用户埋点数据分析(前)
后端·架构·rust
古城小栈11 小时前
Rust 模式匹配 大合集
开发语言·后端·rust
古城小栈11 小时前
Rust 宏 !
算法·rust