如何在Cargo工作区中查找无用代码(Dead Code)?
Rust工作区中检测跨crate无用代码的方法
Rust默认的未使用项警告仅针对单个crate内部的非公开项,在多crate工作区场景下,无法自动识别跨crate的未使用公开代码。以下是几种实用的解决方法:
1. 使用cargo deadcode工具
- 这是一款第三方cargo扩展,支持扫描整个工作区,可指定主crate作为入口,分析所有间接被主crate引用的项,标记出未被使用的代码(包括公开项)。
- 安装命令:
cargo install cargo-deadcode - 使用方式:在工作区根目录执行
cargo deadcode --main-crate <你的主crate名称>,也可直接指定入口二进制或库目标。
2. 结合cargo tree快速定位未被依赖的crate
cargo tree可展示工作区的依赖关系,通过cargo tree --invert <主crate名称>反向查看未被主crate间接依赖的crate,快速定位整个未被使用的子crate。- 若要深入单个crate内部的公开未使用项,搭配
cargo deadcode扫描即可。
3. 启用Rust原生的unused-pub lint(Rust 1.68+)
- Rust 1.68及以上版本新增了
unused-publint,默认处于允许级别,可通过工作区的Cargo.toml配置开启警告:[workspace] rustflags = ["-W", "unused-pub"] - 注意:该lint仅检查公开项是否被其他crate引用,若要精准关联到主crate的依赖链,仍需结合工具扫描。
内容的提问来源于stack exchange,提问作者orlp
相关产品推荐
相关产品推荐

