レイヤー
レイヤー設定を使用すると、プロジェクトのアーキテクチャレベルを定義し、それらの間の依存関係ルールを強制できます。
レイヤーの定義
レイヤーは layer_violation ルール内で設定されます。各レイヤー定義は以下で構成されます。
name: レイヤーの一意の名前。path(またはpaths): このレイヤーのファイルを特定する glob パターン。allowed_imports(またはcan_import): このレイヤーがインポートを許可されているレイヤー名のリスト。
例: クリーンアーキテクチャ (Clean Architecture)
yaml
rules:
layer_violation:
severity: high
layers:
- name: domain
path: '**/domain/**'
allowed_imports: [] # Domain レイヤーは何にも依存してはいけません
- name: application
path: '**/application/**'
allowed_imports:
- domain
- name: infrastructure
path: '**/infrastructure/**'
allowed_imports:
- domain
- application
- name: presentation
path: '**/presentation/**'
allowed_imports:
- domain
- application仕組み
layer_violation 検出器が有効な場合:
pathパターンに基づいて、プロジェクト内のすべてのファイルを特定のレイヤーにマッピングします。- ファイルが複数のパターンに一致する場合、最も具体的なもの (最も長いパターン) が選択されます。
- ツールはすべてのインポートをチェックします。レイヤー
AのファイルがレイヤーBのファイルをインポートし、BがレイヤーAのallowed_importsリストにない場合、違反が報告されます。