Cargo Shear
Detect and remove unused dependencies from Cargo.toml in Rust projects.
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"]