Обзор детекторов
archlint поставляется с более чем 28 встроенными детекторами, разделенными по типам архитектурных проблем или проблем качества кода, которые они выявляют.
Проблемы зависимостей
| Детектор | ID | Описание | По умолчанию |
|---|---|---|---|
| Циклические зависимости | cycles | Циклические зависимости между файлами | ✅ |
| Циклы типов | circular_type_deps | Циклы зависимостей только на уровне типов | ❌ |
| Циклы пакетов | package_cycles | Циклы зависимостей между пакетами | ❌ |
| Нарушение слоев | layer_violation | Нарушения определенных архитектурных слоев | ❌ |
| Нарушение SDP | sdp_violation | Нарушения принципа устойчивых зависимостей | ❌ |
Дизайн модулей и классов
| Детектор | ID | Описание | По умолчанию |
|---|---|---|---|
| God Module | god_module | Модули с слишком большим количеством обязанностей | ✅ |
| Hub Module | hub_module | Сильно связанные «узловые» модули (Hub) | ❌ |
| Низкая связность | lcom | Классы с низкой внутренней связностью (LCOM4) | ❌ |
| Высокая зацепленность | high_coupling | Модули с слишком большим количеством зависимостей | ❌ |
| Рассредоточенный модуль | module_cohesion | Функциональность, разбросанная по слишком многим файлам | ❌ |
| Feature Envy | feature_envy | Методы, использующие другой класс больше, чем свой собственный | ❌ |
Качество кода и организация
| Детектор | ID | Описание | По умолчанию |
|---|---|---|---|
| Мертвый код | dead_code | Неиспользуемые экспорты | ✅ |
| Мертвые символы | dead_symbols | Неиспользуемые локальные функции и переменные | ✅ |
| Осиротевшие типы | orphan_types | Типы, не связанные с остальной кодовой базой | ✅ |
| Злоупотребление Barrel | barrel_file | Большие barrel-файлы, вызывающие зацепление | ✅ |
| Одержимость примитивами | primitive_obsession | Злоупотребление примитивами вместо доменных типов | ❌ |
Сложность и размер
| Детектор | ID | Описание | По умолчанию |
|---|---|---|---|
| Высокая сложность | complexity | Функции с высокой цикломатической сложностью | ✅ |
| Глубокая вложенность | deep_nesting | Глубоко вложенные блоки кода | ✅ |
| Много параметров | long_params | Функции с слишком большим количеством параметров | ✅ |
| Большой файл | large_file | Слишком большие исходные файлы | ✅ |
Паттерны изменений
| Детектор | ID | Описание | По умолчанию |
|---|---|---|---|
| Shotgun Surgery | shotgun_surgery | Изменения, требующие модификации многих файлов | ❌ |
| Нестабильный интерфейс | unstable_interface | Часто меняющиеся публичные интерфейсы | ❌ |
Runtime и безопасность
| Детектор | ID | Описание | По умолчанию |
|---|---|---|---|
| Утечка тестов | test_leakage | Тестовый код, попадающий в продакшн | ❌ |
| Связанность с вендором | vendor_coupling | Жесткая привязка к внешним библиотекам | ❌ |
| Импорт с побочными эффектами | side_effect_import | Импорты, вызывающие побочные эффекты | ✅ |
| Общее мутабельное состояние | shared_state | Экспортируемые мутабельные переменные | ❌ |
Архитектурные метрики
| Детектор | ID | Описание | По умолчанию |
|---|---|---|---|
| Нарушение абстрактности | abstractness | Зоны боли/бесполезности (метрика I+A) | ❌ |
| Рассредоточенная конфигурация | scattered_config | Конфигурация, разбросанная по многим файлам | ❌ |
| Дублирование кода | code_clone | Дублирование кода в проекте | ✅ |