Description
Steps to reproduce:
cargo new mycrate
cd mycrate
cargo add --dev termtree
printf '[lints.rust]\nunused_crate_dependencies = "deny"\n' >> Cargo.toml
cargo build --all-targets
Result:
error: external crate `termtree` unused in `mycrate`: remove the dependency or add `use termtree as _;`
|
= note: requested on the command line with `-D unused-crate-dependencies`
error: could not compile `mycrate` (bin "mycrate" test) due to 1 previous error
dev-dependencies have a variety of uses, and should not be considered as potentially unused. I'd love to see unused dev-dependencies detected as well, but right now they produce false positives.
The reverse is also true: rustc will warn about unused non-dev dependencies when compiling tests.
Short-term, perhaps we could provide a way to easily disable this warning entirely for dev-dependencies, and for non-dev dependencies in targets such as tests.
Longer-term, perhaps rustc could feed information about potentially unused dependencies back to Cargo in its output, and Cargo could then aggregate the intersection of those dependencies that are completely unused.
Meanwhile, however, these false positives make it difficult to use unused_crate_dependencies
in any project that has dev-dependencies or tests.