cargo-machete について
Rust 開発者向けのスキルで、cargo-machete による未使用依存関係の検出と削除を支援し、結果の確認や変更後の検証方法も案内します。
主な機能
- 01crate またはワークスペースの依存関係を検査
- 02検出結果のメタデータを表示
- 03確認済みの未使用依存関係を削除
- 04よくある誤検出に対処
- 05整理後にビルドを確認
活用シーン
- 01リリース前の Rust プロジェクト監査
- 02ワークスペースの不要な依存関係を削除
- 03CI で未使用依存関係を検査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill cargo-macheteインストール後、Claude Code で/cargo-macheteを入力して読み込まれたか確認します。
同梱ファイルREFERENCE.md
詳細
cargo-machete - 未使用の依存関係の検出
cargo-machete を使用して、Rust プロジェクト内の未使用の依存関係を検出し、削除します。
このスキルを使用する場面
| このスキルを使用する場面... | 代わりに X を使用する場面... |
|---|---|
| 未使用の依存関係を監査する | 古くなった依存関係を確認する場合 — cargo outdated を使用 |
| Cargo.toml を整理する | セキュリティ脆弱性を監査する場合 — cargo audit を使用 |
| 不要なものを削除してビルド時間を最適化する | ライセンスへの準拠を確認する場合 — cargo deny を使用 |
| CI で依存関係を検証する | nightly で正確な分析が必要な場合 — cargo +nightly udeps を使用 |
コンテキスト
- Cargo.toml: !
find . -maxdepth 1 -name \'Cargo.toml\' - ワークスペース: !
find . -maxdepth 1 -name 'Cargo.toml' -exec grep -q '\[workspace\]' {} + - cargo-machete のインストール状況: !
cargo machete --version - Machete の設定: !
find . -maxdepth 1 -name \'.cargo-machete.toml\' - ワークスペースメンバー: !
find . -maxdepth 1 -name 'Cargo.toml' -exec grep -A 20 '^\[workspace\]' {} +
実行方法
以下の手順で未使用の依存関係を分析します。
ステップ 1:インストールの確認
cargo-machete がインストールされているか確認します(上記の「コンテキスト」を参照)。インストールされていない場合は、インストールします。
cargo install cargo-machete
ステップ 2:依存関係の分析
詳細な出力を得るため、メタデータ付きで cargo-machete を実行します。
# Single crate
cargo machete --with-metadata
# Workspace (if Context shows workspace)
cargo machete --workspace --with-metadata
ステップ 3:結果の評価
出力を確認し、各検出結果を分類します。
| 検出結果 | 対応 |
|---|---|
| 実際に未使用の依存関係 | --fix を使用するか、手動で削除 |
| proc-macro の依存関係(例:serde derive) | machete:ignore コメントを追加 |
| build.rs でのみ使用される依存関係 | [build-dependencies] に移動 |
| 再エクスポートされた依存関係 | 説明を添えて machete:ignore コメントを追加 |
ステップ 4:修正の適用
未使用と確認された依存関係を自動で削除します。
cargo machete --fix
誤検出の場合は、Cargo.toml に無視アノテーションを追加します。
serde = "1.0" # machete:ignore - used via derive macro
または、プロジェクト全体で無視する項目を .cargo-machete.toml に設定します。
[ignore]
dependencies = ["serde", "log"]
ステップ 5:ビルドの検証
依存関係を削除した後、引き続きコンパイルできることを確認します。
cargo check --all-targets
cargo test --no-run
誤検出への対応
| 状況 | 解決策 |
|---|---|
| proc-macro の依存関係が未使用と判定される | machete:ignore コメントを追加 |
| build.rs でのみ使用される依存関係が検出される | [build-dependencies] に移動 |
| 再エクスポートされた依存関係が検出される | 説明を添えて machete:ignore コメントを追加 |
| example/bench でのみ使用される依存関係 | [dev-dependencies] にあることを確認 |
cargo-udeps との比較
| 機能 | cargo-machete | cargo-udeps |
|---|---|---|
| 正確性 | 良好 | 優秀 |
| 速度 | 非常に高速 | 遅め |
| Rust バージョン | stable | nightly が必要 |
| 誤検出 | あり | 少なめ |
高速な CI チェックには cargo-machete を使用します。徹底的な監査には cargo-udeps を使用します。
cargo +nightly udeps --workspace --all-features
エージェント向けの最適化
| コンテキスト | コマンド |
|---|---|
| 簡易チェック | cargo machete |
| 詳細チェック | cargo machete --with-metadata |
| ワークスペースのチェック | cargo machete --workspace --with-metadata |
| 自動修正 | cargo machete --fix |
| 修正後の検証 | cargo check --all-targets |
| 正確なチェック(nightly) | cargo +nightly udeps --workspace |
クイックリファレンス
| フラグ | 説明 |
|---|---|
--with-metadata | バージョンと場所を含む詳細な出力を表示 |
--fix | Cargo.toml から未使用の依存関係を自動削除 |
--workspace | ワークスペースの全メンバーをチェック |
-p <crate> | 指定したワークスペースメンバーをチェック |
--exclude <crate> | 指定したワークスペースメンバーを除外 |
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| proc macro が未使用と判定される | Cargo.toml に machete:ignore コメントを追加 |
| build.rs の依存関係が検出される | [build-dependencies] に移動 |
| 再エクスポートされた依存関係が検出される | 説明を添えて machete:ignore を追加 |
| より高い正確性が必要 | cargo +nightly udeps を使用 |
CI への統合パターン、設定ファイルの例、pre-commit の設定、Makefile との統合については、REFERENCE.md を参照してください。
コメント
Markdown 対応