Cargo Shear ✂️ 🐑
Detect and remove unused dependencies from Cargo.toml in Rust projects.
Does not with dependencies from macros (yet).
Usage
Exit Code (for CI)
The exit code gives an indication whether unused dependencies have been found:
- 0 if found no unused dependencies,
- 1 if it found at least one unused dependency,
- 2 if there was an error during processing (in which case there's no indication whether any unused dependency was found or not).
Technique
- use the
cargo_metadatacrate to list all dependencies specified in[workspace.dependencies]and[dependencies] - iterate through all package targets to locate all Rust files
- use
synto parse these Rust files and extract imports - identify the difference between the imports and the package dependencies
TODO
- make the reporting more granular for
[dependencies],[dev-dependencies]and[build-dependencies] - add tests
- print things nicely
- ignore
[package.metadata.cargo-shear] ignored = ["crate"]