Конфигурация
archlint можно настроить с помощью файла .archlint.yaml в корне вашего проекта. Если конфигурационный файл не найден, инструмент использует разумные значения по умолчанию для всех детекторов.
Структура конфигурационного файла
# Файлы и директории для игнорирования (глобально)
ignore:
- '**/dist/**'
- '**/node_modules/**'
# Алиасы путей (аналогично tsconfig.json или webpack)
# По умолчанию archlint автоматически загружает алиасы из tsconfig.json.
# Явные алиасы, определенные здесь, имеют приоритет над значениями из tsconfig.json.
aliases:
'@/*': 'src/*'
# Настройка интеграции с TypeScript (true, false или путь к файлу)
tsconfig: true
# Расширение из встроенных или кастомных пресетов
extends:
- nestjs
- ./my-company-preset.yaml
# Точки входа для анализа (используются для поиска мертвого кода)
entry_points:
- 'src/main.ts'
# Настройка правил для каждого детектора
rules:
# Короткая форма: только уровень серьезности или "off"
cycles: high
dead_code: medium
# Полная форма: с дополнительными параметрами
god_module:
severity: high
enabled: true
exclude: ['**/generated/**']
# Специфичные для детектора параметры
fan_in: 15
fan_out: 15
churn: 20
# Переопределения правил для конкретных путей
overrides:
- files: ['**/legacy/**']
rules:
complexity: medium
god_module: off
# Настройка оценки и грейдинга
scoring:
# Минимальный уровень серьезности для отображения (low, medium, high, critical)
minimum: low
# Веса для расчета общего балла
weights:
critical: 100
high: 50
medium: 20
low: 5
# Пороги для получения оценки (Density = Total Score / Files)
grade_rules:
excellent: 1.0
good: 3.0
fair: 7.0
moderate: 15.0
poor: 30.0
# Автоматическое определение фреймворка (по умолчанию true)
auto_detect_framework: true
# Настройки архитектурного диффа
diff:
# Порог ухудшения метрик (например, рост сложности) для сообщения о регрессии
metric_threshold_percent: 20
# Максимальное смещение строк для сопоставления запахов между версиями
line_tolerance: 50
# Настройки Git
git:
enabled: true # включить анализ (по умолчанию true)
history_period: '1y'Уровни серьезности (Severity)
В секции rules вы можете использовать следующие уровни:
critical: Критическая проблема, требующая немедленного исправления.high: Высокий уровень серьезности, архитектурная ошибка.medium: Средний уровень серьезности или предупреждение.low: Низкий уровень серьезности или информационное сообщение.off: Полностью отключает детектор.
Конфигурация через CLI
Вы можете указать путь к конфигурационному файлу явно:
archlint scan --config custom-config.yamlИнтеграция с TypeScript
archlint может автоматически синхронизироваться с вашим tsconfig.json. Используйте поле tsconfig для управления этой функцией:
tsconfig: true(по умолчанию): Автоматически ищетtsconfig.jsonв корне проекта.tsconfig: falseилиtsconfig: null: Отключает интеграцию с TypeScript.tsconfig: "./path/to/tsconfig.json": Использует конкретный файл конфигурации.
Когда интеграция включена, инструмент:
- Загружает алиасы: Извлекает
compilerOptions.pathsиcompilerOptions.baseUrlдля автоматической настройкиaliases. - Автоматическое игнорирование: Добавляет
compilerOptions.outDirв глобальный списокignore. - Исключения: Добавляет паттерны из поля
excludeв списокignore.
Конфигурация Diff
Секция diff управляет тем, как обнаруживаются архитектурные регрессии при сравнении двух снимков:
metric_threshold_percent(по умолчанию:20): Определяет, насколько должна увеличиться метрика (например, цикломатическая сложность или связанность), чтобы она была отмечена как «ухудшившаяся». Например, при пороге 20% сложность функции должна увеличиться с 10 до как минимум 12, чтобы попасть в отчет.line_tolerance(по умолчанию:50): Определяет максимальное количество строк, на которое может сместиться символ кода (из-за добавлений или удалений в других частях файла), прежде чем archlint перестанет распознавать его как тот же самый «запах». Это «нечеткое сопоставление» предотвращает ложные сообщения о новых регрессиях при обычном редактировании кода.
Расширение (Extends)
Поле extends позволяет загружать пресеты из различных источников:
- Встроенные пресеты:
nestjs,nextjs,react,oclif. - Локальные файлы: Относительный путь к YAML-файлу (например,
./archlint-shared.yaml). - URL: Прямая ссылка на YAML-файл (например,
https://example.com/preset.yaml).
Пресеты объединяются в том порядке, в котором они указаны. Конфигурация пользователя всегда имеет наивысший приоритет.
Для удаленных пресетов (по URL) действуют следующие ограничения:
- Безопасность: Запросы к локальным и приватным сетям (localhost, 127.0.0.1, 10.x.x.x, 192.168.x.x, 172.16-31.x.x) блокируются для защиты от SSRF.
- Таймаут: На загрузку пресета отводится 30 секунд. Если сервер не ответит вовремя или URL недоступен, будет выведена ошибка.
- Валидация: Поддерживаются только протоколы
httpиhttps. Некорректные URL вызовут ошибку конфигурации.