Слои
Конфигурация слоев позволяет определить архитектурные уровни вашего проекта и обеспечить соблюдение правил зависимостей между ними.
Определение слоев
Настройка слоев производится внутри правила 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не указан в спискеallowed_importsслояA, сообщается о нарушении.