概要
アーキテクチャ品質保存ツールdeptrac
のバージョンアップ(0.11.1 to 1.0.2)を行ったので、ツール概要と修正箇所をまとめる
どんなツール?
Deptracは、PHPのための静的コード解析ツールであり、プロジェクト内のアーキテクチャの意思決定をコミュニケートし、視覚化し、強制するのに役立ちます。クラスに対してアーキテクチャのレイヤーと、それらに適用するべきルールを自由に定義できます。
たとえば、Deptracを使用して、プロジェクト内のバンドル/モジュール/拡張がお互いに本当に独立していることを確認し、再利用しやすくすることができます。
Deptracは、CIパイプラインで使用でき、プルリクエストが定義したアーキテクチャルールを違反していないかどうかを確認できます。オプションのGraphvizフォーマッタを使用すると、レイヤー、ルール、および違反を視覚化できます。
- 要はクリーンアーキテクチャのレイヤーや依存関係、命名規則について静的解析してくれるツール
実行コマンド
vendor/bin/deptrac analyse
デフォルトではルートディレクトリのdeptrac.yml
を設定ファイルとして読み込む。それ以外のファイルを設定ファイルとして読み込みたい場合は--config-file
オプションを付与する
例:vendor/bin/deptrac analyse --confifg-file=lib/deptrac.yml
主要概念
- layers
- 定義するクラスのグループ
- rulesets(ルールセット)
- レイヤーで通信できるかを示す。つまりそのレイヤーで許可されているクラスはどれかを指定する
例えば以下のような層構造を指定したいときは下記のように記述する
- コントローラはサービスにアクセスできますが、リポジトリにはアクセスできない
- サービスはリポジトリにアクセスできますが、コントローラにはアクセスできない
- リポジトリはサービスおよびコントローラにアクセスしてはいけない
# deptrac.yaml
deptrac:
paths:
- ./examples/ControllerServiceRepository1/
exclude_files: ~
layers:
-
name: Controller
collectors:
-
type: className
value: .*MyNamespace\\.*Controller.*
-
name: Repository
collectors:
-
type: className
value: .*MyNamespace\\.*Repository.*
-
name: Service
collectors:
-
type: className
value: .*MyNamespace\\.*Service.*
ruleset:
Controller:
- Service
Service:
- Repository
Repository: ~
- paths→検証ディレクトリのパス
- exclude_files→対象外のファイル
- layers→それぞれの層を指定する
- collectors配下の条件を満たすものに関して、nameで指定した値を一つの層として定義する
- 例:src/Client 以下のディレクトリに関して「Client」層と定義する
layers:
- name: Client
collectors:
- type: directory
regex: src/Client/
- ruleset→layersで定義した層の通信の許可を確認する
- 上記の例では、Conroller→Service→Repositoryの通信の依存の構造を示す
アップグレードの影響
-
0.11.1 to 1.0.2
にアップデートするにあたり、以下のようにYAMLファイルを修正-
paths
、exclude_files
、layers
、ruleset
をdeptrac:
配下に移動する -
--config-file
オプションの付与- デフォルトではルートディレクトリの
./deptrac.yml
を設定ファイルとして読み込むようになった。デフォルトのファイル名を設定ファイルとしては指定していないので、--config-file
オプションでファイルパスを指定するようにした
- デフォルトではルートディレクトリの
-
- 参考:アップグレードガイド