31 个版本 (5 个稳定版)
新 1.1.2 | 2024 年 8 月 18 日 |
---|---|
1.1.1 | 2024 年 7 月 25 日 |
0.0.26 | 2024 年 5 月 29 日 |
0.0.24 | 2024 年 4 月 9 日 |
0.0.16 | 2024 年 3 月 29 日 |
在 Cargo 插件 中排名 82
每月下载量 11,473 次
26KB
447 行代码(不包括注释)
Cargo Shear ✂️ 🐑
检测并从 Rust 项目的 Cargo.toml
中移除未使用的依赖。
安装
cargo binstall cargo-shear
# OR
cargo install cargo-shear
用法
cargo shear --fix
忽略假阳性
[!IMPORTANT]
cargo shear
不能检测宏中的依赖使用,因为它使用syn
解析文件
可以通过将它们添加到包的 Cargo.toml
[package.metadata.cargo-shear]
ignored = ["crate"]
或工作区的 Cargo.toml
[workspace.metadata.cargo-shear]
ignored = ["crate"]
否则请以错误报告问题。
CI
- name: Install cargo-binstall
uses: cargo-bins/cargo-binstall@main
- name: Install cargo-shear
run: cargo binstall --no-confirm cargo-shear
- run: cargo shear
退出码(用于 CI)
退出码指示是否发现了未使用的依赖
- 如果没有发现未使用的依赖,则返回 0
- 如果发现了至少一个未使用的依赖,则返回 1
- 如果在处理过程中发生错误,则返回 2(在这种情况下,无法指示是否发现了任何未使用的依赖)。
技术
- 使用
cargo_metadata
包列出在[workspace.dependencies]
和[dependencies]
中指定的所有依赖 - 遍历所有包目标(
lib
、bin
、example
、test
和bench
)以定位所有 Rust 文件 - 使用
syn
解析这些 Rust 文件并提取导入 - 找出导入与包依赖之间的差异
先前的艺术
- est31/cargo-udeps
- 它通过编译你的项目来收集依赖使用,并在
target/
目录中找到它们 - 似乎不再与最新版本的
cargo
兼容 - 不与 cargo 工作空间兼容
- 它通过编译你的项目来收集依赖使用,并在
- bnjbvr/cargo-machete
- 通过在源代码上运行正则表达式模式来收集依赖项使用情况
- 无法检测到依赖项的所有使用情况
- 不会从工作空间根目录中删除未使用的依赖项
获奖案例
赞助商
依赖项
~8–17MB
~255K SLoC