用途:cargo-machete 用于检测 Rust 项目中未被使用的依赖,帮助审计 Cargo.toml、清理依赖冗余、优化构建时间,并可在 CI 中验证依赖。
主要能力:支持单 crate 与工作区检查;--with-metadata 输出含版本与位置的详细信息;--fix 自动从 Cargo.toml 移除未使用依赖;-p 指定工作区成员,--exclude 排除成员。
使用方式:先确认已安装,未安装则运行 cargo install cargo-machete。单 crate 运行 cargo machete --with-metadata;工作区运行 cargo machete --workspace --with-metadata。确认未使用后可用 cargo machete --fix 自动移除,随后运行 cargo check --all-targets 与 cargo test --no-run 验证构建。
误报处理:过程宏依赖(如 serde derive)可在 Cargo.toml 中加注释 serde = "1.0" # machete:ignore - used via derive macro;仅 build.rs 使用的依赖应移至 [build-dependencies];被重导出的依赖加 machete:ignore 并说明;仅示例或基准使用的依赖应确认位于 [dev-dependencies]。也可创建 .cargo-machete.toml,在 [ignore] 的 dependencies 中列出项目级忽略项。
适用场景:快速 CI 检查、清理 Cargo.toml、移除依赖膨胀以缩短构建时间。
限制:与 cargo-udeps 相比,cargo-machete 速度快、使用稳定版 Rust,但准确度略低、误报稍多;需要更精确分析时可使用 cargo +nightly udeps --workspace --all-features。检查过时依赖用 cargo outdated,安全审计用 cargo audit,许可证合规用 cargo deny。CI 集成、配置文件示例、pre-commit 与 Makefile 集成等细节暂未提供。