Skip to content

Latest commit

 

History

History
110 lines (73 loc) · 6.56 KB

readme.ja.md

File metadata and controls

110 lines (73 loc) · 6.56 KB

Zugen

Build Status Maven Central

English ver.

Scalaプロジェクト向けの、アーキテクチャ図やドキュメントを生成するsbtプラグインです。

生成されるアーキテクチャ図やドキュメントの種類

以下のスクリーンショットは サンプルプロジェクトに対してZugenを実行した結果です。

Domain object table

ドメインオブジェクトが含まれるとして指定したパッケージ以下の、オブジェクトたちの一覧表です。 ドメインオブジェクトがドメインの用語と対応関係にあるか、などを確認する際に便利です。

  • パッケージやclass/trait名、scaladoc、ファイルパスの一覧
  • GitHubのソースへのジャンプ

Domain object table

Domain relation diagram

ドメインオブジェクト同士の関連を示す図です。

  • class/trait名とscaladocの表示
  • 継承関係の図示
  • classやtraitのプロパティの表示
  • ドメイン以外のパッケージに依存するドメインオブジェクトの参照を赤くハイライト
  • GitHubのソースへのジャンプ

Domain relation diagram

Method Invocation Diagram

特定のパッケージ(controller用パッケージなど)を起点に、メソッドの呼び出し関係を示す図です。

  • プロジェクト内部のクラス同士の呼び出しを可視化
  • 外部ライブラリの呼び出しを(薄いグレーで)可視化
  • GitHubのソースへのジャンプ

Method invocation diagram

Getting Started

Settings

project/plugins.sbt

addSbtPlugin("io.github.todokr" % "sbt-zugen" % "2021.12.0")

project/zugen.properties

domainPackages=example.domain                   # Package name which represent domain
domainObjectExcludePatterns=".+Repository"      # Regex patterns to exclude classes from domain relation diagram
methodInvocationRootPackage=example.controllers # The root package of method invocation diagram
keys
key description available values default example
documentsToGenerate 出力するドキュメントタイプです。
空の場合、全種類のドキュメントが生成されます。
domain-object-table
domain-relation-diagram
method-invocation-diagram
empty documentsToGenerate=domain-object-table,domain-relation-diagram,method-invocation-diagram
domainPackages ドメインオブジェクトが含まれるパッケージを指定します。 comma separated string empty domainPackages=app1.domain,app2.domain
domainObjectExcludePatterns Domain relation diagram に表示させないクラスを、正規表現で指定できます。 comma separated string empty domainObjectExcludePatterns=".+Repository"
methodInvocationRootPackage Method invocation diagram における呼び出しの起点となるパッケージです。 string empty methodInvocationRootPackage=controller
documentPath Zugenのドキュメントを出力するディレクトリです。 string target/zugen-docs documentPath=docs
githubBaseUrl GitHubのソースへのジャンプを行うためのベースとなる、リポジトリURLです string empty githubBaseUrl=https://github.com/todokr/zugen/blob/trunk/src/sbt-test/sbt-zugen/application/

build.sbt

Zugen はソースコードの情報を SemanticDB から収集しています。 SemanticDB のファイルを生成する手段は2つあります。

sbtオプション

1.13より、sbt は SemanticDB の生成をサポートしています。

ThisBuild / semanticdbEnabled := true
ThisBuild / semanticdbVersion := "4.4.27"
scalacOptions ++= Seq("-Yrangepos", "-P:semanticdb:text:on")
compiler plugin
addCompilerPlugin("org.scalameta" %% "semanticdb-scalac" % "4.4.33" cross CrossVersion.full)
scalacOptions ++= Seq("-Yrangepos", "-P:semanticdb:text:on")

Run

$ sbt zugen

実行すると、documentPath で設定したディレクトリ (デフォルトは target/zugen-docs) に、Zugenのドキュメントが生成されます。

質問などは気軽に Twitterでご連絡ください。

Thanks

Zugen はJavaプロジェクトのドキュメント生成ツールである JIG の哲学にインスパイアされています。