mcpField
M
maven-dependency-audit

maven-dependency-audit

github.com/decebals開発761285 回インストール7 週間前に更新
リポジトリ

maven-dependency-audit について

maven-dependency-auditは、Mavenプロジェクトの保守担当者向けの依存関係監査スキルです。更新確認、依存ツリー分析、脆弱性スキャンを行い、優先順位付きのレポートにまとめます。

主な機能

  1. 01依存関係とプラグインの更新確認
  2. 02依存ツリーとバージョン競合の分析
  3. 03未使用の依存関係の特定
  4. 04依存関係の脆弱性スキャン
  5. 05優先順位付き監査レポートの作成
  6. 06依存関係の更新方針の提示

活用シーン

  1. 01リリース前にMavenの依存関係を監査
  2. 02保守時に古い依存や未使用依存を発見
  3. 03セキュリティ勧告後に脆弱性をスキャン
  4. 04推移的依存関係を追跡して競合を解消

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/decebals/claude-code-java --skill maven-dependency-audit

インストール後、Claude Code で/maven-dependency-auditを入力して読み込まれたか確認します。

同梱ファイルREADME.md

詳細

Maven 依存関係監査スキル

Maven の依存関係について、更新、脆弱性、競合を監査します。

使用するタイミング

  • ユーザーが「依存関係を確認して」「依存関係を監査して」「古くなった依存関係」と言った場合
  • リリース前
  • 定期的なメンテナンス(月次を推奨)
  • セキュリティアドバイザリの公開後

監査ワークフロー

  1. 更新を確認 - 古くなった依存関係を探します
  2. ツリーを分析 - 競合と重複を探します
  3. セキュリティスキャン - 脆弱性を確認します
  4. 報告 - 優先順位を付けたアクションをまとめます

1. 古くなった依存関係を確認する

コマンド
mvn versions:display-dependency-updates
出力の分析
[INFO] The following dependencies in Dependencies have newer versions:
[INFO]   org.slf4j:slf4j-api ......................... 1.7.36 -> 2.0.9
[INFO]   com.fasterxml.jackson.core:jackson-databind . 2.14.0 -> 2.16.1
[INFO]   org.junit.jupiter:junit-jupiter ............. 5.9.0 -> 5.10.1
更新を分類する
カテゴリ条件対応
セキュリティ新しいバージョンに CVE の修正が含まれるできるだけ早く更新
メジャーx.0.0 の変更変更履歴を確認し、徹底的にテスト
マイナーx.y.0 の変更通常は安全ですが、テストしてください
パッチx.y.z の変更安全で、テストは最小限で済みます
プラグインの更新も確認する
mvn versions:display-plugin-updates

2. 依存関係ツリーを分析する

ツリー全体
mvn dependency:tree
特定の依存関係で絞り込む
mvn dependency:tree -Dincludes=org.slf4j
競合を見つける

次の項目を確認します:

[INFO] +- com.example:module-a:jar:1.0:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.36:compile
[INFO] +- com.example:module-b:jar:1.0:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:2.0.9:compile (omitted for conflict)

フラグ:

  • (omitted for conflict) - バージョンの競合が Maven によって解決されました
  • (omitted for duplicate) - 同じバージョンで、問題はありません
  • 同じライブラリの複数バージョン - 実行時の問題が発生する可能性があります
未使用の依存関係を分析する
mvn dependency:analyze

出力:

[WARNING] Used undeclared dependencies found:
[WARNING]    org.slf4j:slf4j-api:jar:2.0.9:compile
[WARNING] Unused declared dependencies found:
[WARNING]    commons-io:commons-io:jar:2.11.0:compile

3. セキュリティ脆弱性スキャン

オプション A:OWASP Dependency-Check(推奨)

pom.xml に追加します:

<plugin>
    <groupId>org.owasp</groupId>
    <artifactId>dependency-check-maven</artifactId>
    <version>9.0.7</version>
</plugin>

実行します:

mvn dependency-check:check

出力:target/dependency-check-report.html に HTML レポートが生成されます

オプション B:Maven Dependency Plugin
mvn dependency:analyze-report
オプション C:GitHub Dependabot

GitHub を使用している場合は、リポジトリの設定で Dependabot アラートを有効にします。

深刻度レベル
CVSS スコア深刻度対応
9.0 - 10.0重大直ちに更新
7.0 - 8.9高数日以内に更新
4.0 - 6.9中数週間以内に更新
0.1 - 3.9低都合のよいタイミングで更新

4. 監査レポートを生成する

出力形式
## Dependency Audit Report

**Project:** {project-name}
**Date:** {date}
**Total Dependencies:** {count}

### Security Issues

| Dependency | Current | CVE | Severity | Fixed In |
|------------|---------|-----|----------|----------|
| log4j-core | 2.14.0 | CVE-2021-44228 | Critical | 2.17.1 |

### Outdated Dependencies

#### Major Updates (Review Required)
| Dependency | Current | Latest | Notes |
|------------|---------|--------|-------|
| slf4j-api | 1.7.36 | 2.0.9 | API changes, see migration guide |

#### Minor/Patch Updates (Safe)
| Dependency | Current | Latest |
|------------|---------|--------|
| junit-jupiter | 5.9.0 | 5.10.1 |
| jackson-databind | 2.14.0 | 2.16.1 |

### Conflicts Detected
- slf4j-api: 1.7.36 vs 2.0.9 (resolved to 2.0.9)

### Unused Dependencies
- commons-io:commons-io:2.11.0 (consider removing)

### Recommendations
1. **Immediate:** Update log4j-core to fix CVE-2021-44228
2. **This sprint:** Update minor/patch versions
3. **Plan:** Evaluate slf4j 2.x migration

よくあるシナリオ

シナリオ:リリース前に確認する
# Quick check
mvn versions:display-dependency-updates -q

# Full audit
mvn versions:display-dependency-updates && \
mvn dependency:analyze && \
mvn dependency-check:check
シナリオ:依存関係が含まれる理由を調べる
mvn dependency:tree -Dincludes=commons-logging
シナリオ:特定のバージョンを強制する(競合を解決する)
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.9</version>
        </dependency>
    </dependencies>
</dependencyManagement>
シナリオ:推移的依存関係を除外する
<dependency>
    <groupId>com.example</groupId>
    <artifactId>some-library</artifactId>
    <version>1.0</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

トークンの最適化

  • -q(quiet)フラグを使うと、出力を簡潔にできます
  • 特定の依存関係を探すときは、-Dincludes=groupId:artifactId で絞り込みます
  • コマンドを個別に実行し、結果を要約します
  • 依存関係ツリー全体を貼り付けず、競合を要約します

コマンド早見表

タスクコマンド
古くなった依存関係mvn versions:display-dependency-updates
古くなったプラグインmvn versions:display-plugin-updates
依存関係ツリーmvn dependency:tree
特定の依存関係を検索mvn dependency:tree -Dincludes=groupId
未使用の依存関係mvn dependency:analyze
セキュリティスキャンmvn dependency-check:check
バージョンを更新mvn versions:use-latest-releases
スナップショットを更新mvn versions:use-latest-snapshots

更新戦略

保守的(本番環境向けに推奨)
  1. パッチバージョンは自由に更新します
  2. マイナーバージョンは基本的なテストを行ってから更新します
  3. メジャーバージョンには移行計画が必要です
積極的(開発が活発な場合)
# Update all to latest (use with caution!)
mvn versions:use-latest-releases
mvn versions:commit  # or versions:revert
選択的
# Update specific dependency
mvn versions:use-latest-versions -Dincludes=org.junit.jupiter

コメント