8 releases
0.9.2 | Jul 12, 2024 |
---|---|
0.9.1 | May 7, 2024 |
0.9.0 | Apr 12, 2024 |
0.8.2 | Mar 28, 2024 |
0.7.1 | Nov 8, 2023 |
#234 in Cargo plugins
48 downloads per month
45KB
1K
SLoC
cargo-machete-nk
Remove unused Rust dependencies with this one weird trick!
Introduction
This is a fork of cargo-machete
, which adds a few additional features,
such as --exclude
flag to exclude provided subdirectories from the search.
cargo-machete
is a Cargo tool that detects unused dependencies in Rust
projects, in a fast (yet imprecise) way.
See also the original author's blog post for a detailed writeup.
Installation
Install cargo-machete-nk
with cargo:
cargo install cargo-machete-nk
Usage
Run cargo-machete-nk in a directory that contains one or more Rust projects (using Cargo for dependency management):
cd my-directory && cargo machete-nk
# alternatively
cargo machete-nk /absolute/path/to/my/directory
The return code gives an indication whether unused dependencies have been found:
- 0 if machete 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).
This can be used in CI situations.
False positives
To ignore a certain set of dependencies in a crate, add
package.metadata.cargo-machete
to Cargo.toml
(or workspace.metadata.cargo-machete
to a
workspace Cargo.toml
), and specify an ignored
array:
For example:
[dependencies]
prost = "0.10" # Used in code generated by build.rs output, which cargo-machete cannot check
# in an individual package Cargo.toml
[package.metadata.cargo-machete]
ignored = ["prost"]
# in a workspace Cargo.toml
[workspace.metadata.cargo-machete]
ignored = ["prost"]
If there are too many false positives, consider using the --with-metadata
CLI
flag, which will call cargo metadata --all-features
to find final dependency
names, more accurate dependencies per build type, etc. ⚠ This may modify the
Cargo.lock
files in your projects.
License
Dependencies
~15–25MB
~470K SLoC