Skip to content

Latest commit

 

History

History
176 lines (142 loc) · 7.48 KB

File metadata and controls

176 lines (142 loc) · 7.48 KB

Code Atlas Gradle プラグイン

CI

README 英語版 日本語版 | リリースノート

概要

Code Atlas Gradle プラグインは、プロジェクトのコンパイル済み Java クラスを解析し、次の 2 つの形式でクラス図を生成します。

  • PlantUML.puml
  • Mermaid.mmd

アーキテクチャや依存関係、継承・インタフェース実装を可視化したいときに便利です。

注意: 解析対象から、合成クラス、内部クラス、および匿名内部クラスは除外されます。

使い方

  1. リポジトリの設定settings.gradle.kts または settings.gradle):

    Kotlin DSL (settings.gradle.kts)
    pluginManagement {
        repositories {
            gradlePluginPortal()
            mavenCentral()
        }
    }
    Groovy DSL (settings.gradle)
    pluginManagement {
        repositories {
            gradlePluginPortal()
            mavenCentral()
        }
    }
  2. プラグインを適用build.gradle.kts または build.gradle):

    plugins {
        id("io.github.euledge.code-atlas") version "1.2.0"
    }
  3. 拡張設定(任意):

    Kotlin DSL (build.gradle.kts)
    codeAtlas {
        formats.set(listOf("plantuml", "mermaid"))
        outputDir.set("docs/diagrams")
        rootPackages.set(listOf("com.example.domain", "com.example.infrastructure")) // 任意: パッケージプレフィックスでクラスをフィルタリング
        showDetails.set(true) // 任意: 公開フィールドとメソッドを図に含める
        stripPackagePrefix.set("com.example.") // 任意: クラス名から共通のパッケージプレフィックスを削除
        groupByPackage.set(true) // 任意: パッケージごとにクラスをグループ化(namespace/package構文を使用)
    }
    Groovy DSL (build.gradle)
    codeAtlas {
        formats = ['plantuml', 'mermaid']
        outputDir = 'docs/diagrams'
        rootPackages = ['com.example.domain', 'com.example.infrastructure'] // 任意: パッケージプレフィックスでクラスをフィルタリング
        showDetails = true // 任意: 公開フィールドとメソッドを図に含める
        stripPackagePrefix = 'com.example.' // 任意: クラス名から共通のパッケージプレフィックスを削除
        groupByPackage = true // 任意: パッケージごとにクラスをグループ化(namespace/package構文を使用)
    }
    • formats – 生成したい図のフォーマット一覧。
    • outputDir – 図ファイルを書き出すディレクトリ。
    • rootPackages – 解析対象のクラスをフィルタリングするための任意のパッケージプレフィックス。このプレフィックスで始まるクラスのみが含まれます。DDDアーキテクチャの場合、listOf("com.example.domain", "com.example.infrastructure")のような値を設定します。
    • showDetailstrueの場合、公開フィールドとメソッドを図に含めます。(デフォルト: false
    • stripPackagePrefix – 図をすっきりさせるためにクラス名から削除する共通のパッケージプレフィックス。(デフォルト: ""
    • groupByPackagetrueの場合、パッケージごとにクラスをグループ化します。(デフォルト: false
  4. タスクを実行:

    ./gradlew generateDiagrams

    タスクはプロジェクトをコンパイル(必要なら)し、クラスをスキャンして設定した出力ディレクトリに図を作成します。 詳細なオプションを確認するには、以下を実行してください:

    ./gradlew help --task generateDiagrams

コマンドライン設定

Gradle プロジェクトプロパティ(-P または --project-prop)を使用して、拡張設定を上書きできます。

プロパティ名 説明
formats plantuml,mermaid カンマ区切りのフォーマット一覧。
outputDir reports/diagrams 出力ディレクトリパス。
rootPackages com.example.domain,com.example.infrastructure カンマ区切りのパッケージプレフィックス一覧。
showDetails true または false trueの場合、公開フィールドとメソッドを図に含めます。(デフォルト: false
stripPackagePrefix com.example. クラス名から削除するパッケージプレフィックス。
groupByPackage true または false パッケージごとにクラスをグループ化するかどうか。

注意: ドット(例: rootPackages=com.example)を含むプロパティを渡す場合、特に Windows 環境でのコマンドライン解析の問題を避けるために、--project-propの使用を推奨します。

すべてのパラメータの使用例:

./gradlew generateDiagrams \
    --project-prop formats=plantuml,mermaid \
    --project-prop outputDir=reports/diagrams \
    --project-prop rootPackages=com.example.domain,com.example.infrastructure \
    --project-prop showDetails=true \
    --project-prop stripPackagePrefix=com.example. \
    --project-prop groupByPackage=true

または、Windows では -P とダブルクォーテーションを使用する必要がある場合があります:

./gradlew generateDiagrams -P"formats=plantuml,mermaid" -P"outputDir=reports/diagrams" -P"rootPackages=com.example.domain,com.example.infrastructure" -P"showDetails=true" -P"stripPackagePrefix=com.example." -P"groupByPackage=true"

サンプルプロジェクト

sample-project ディレクトリに最小構成のサンプルがあります。プラグインをローカル Maven リポジトリに公開した後(./gradlew publishToMavenLocal)、以下を実行してください。

cd sample-project
../gradlew generateDiagrams

生成された図は sample-project/docs/diagrams に配置されます。

生成された図の例 (Mermaid)

classDiagram
    namespace sample {
        class B {
            +void doSomething()
        }
        class A
        class C
    }
    namespace dummy {
        class D {
            +String greet(String)
        }
    }
    sample.A ..> sample.B
    sample.A <|-- sample.C
    sample.C ..> sample.B
    sample.C ..> sample.A
Loading

前提条件

  • Java 21(または互換性のある JDK)
  • Gradle 8.5 以上
  • クラスパススキャンに ClassGraph を使用しています。

AI エージェントとの連携

このプロジェクトには、AI エージェント(Cursor, Windsurf, Cline など)がこのプラグインを適切に扱えるようにするための Agent Skills 定義が含まれています。

  • スキル定義ファイル: agents/skills/code-atlas/SKILL.md

ライセンス

MIT License