Skip to content

Обзор детекторов

archlint поставляется с более чем 28 встроенными детекторами, разделенными по типам архитектурных проблем или проблем качества кода, которые они выявляют.

Проблемы зависимостей

ДетекторIDОписаниеПо умолчанию
Циклические зависимостиcyclesЦиклические зависимости между файлами
Циклы типовcircular_type_depsЦиклы зависимостей только на уровне типов
Циклы пакетовpackage_cyclesЦиклы зависимостей между пакетами
Нарушение слоевlayer_violationНарушения определенных архитектурных слоев
Нарушение SDPsdp_violationНарушения принципа устойчивых зависимостей

Дизайн модулей и классов

ДетекторIDОписаниеПо умолчанию
God Modulegod_moduleМодули с слишком большим количеством обязанностей
Hub Modulehub_moduleСильно связанные «узловые» модули (Hub)
Низкая связностьlcomКлассы с низкой внутренней связностью (LCOM4)
Высокая зацепленностьhigh_couplingМодули с слишком большим количеством зависимостей
Рассредоточенный модульmodule_cohesionФункциональность, разбросанная по слишком многим файлам
Feature Envyfeature_envyМетоды, использующие другой класс больше, чем свой собственный

Качество кода и организация

ДетекторIDОписаниеПо умолчанию
Мертвый кодdead_codeНеиспользуемые экспорты
Мертвые символыdead_symbolsНеиспользуемые локальные функции и переменные
Осиротевшие типыorphan_typesТипы, не связанные с остальной кодовой базой
Злоупотребление Barrelbarrel_fileБольшие barrel-файлы, вызывающие зацепление
Одержимость примитивамиprimitive_obsessionЗлоупотребление примитивами вместо доменных типов

Сложность и размер

ДетекторIDОписаниеПо умолчанию
Высокая сложностьcomplexityФункции с высокой цикломатической сложностью
Глубокая вложенностьdeep_nestingГлубоко вложенные блоки кода
Много параметровlong_paramsФункции с слишком большим количеством параметров
Большой файлlarge_fileСлишком большие исходные файлы

Паттерны изменений

ДетекторIDОписаниеПо умолчанию
Shotgun Surgeryshotgun_surgeryИзменения, требующие модификации многих файлов
Нестабильный интерфейсunstable_interfaceЧасто меняющиеся публичные интерфейсы

Runtime и безопасность

ДетекторIDОписаниеПо умолчанию
Утечка тестовtest_leakageТестовый код, попадающий в продакшн
Связанность с вендоромvendor_couplingЖесткая привязка к внешним библиотекам
Импорт с побочными эффектамиside_effect_importИмпорты, вызывающие побочные эффекты
Общее мутабельное состояниеshared_stateЭкспортируемые мутабельные переменные

Архитектурные метрики

ДетекторIDОписаниеПо умолчанию
Нарушение абстрактностиabstractnessЗоны боли/бесполезности (метрика I+A)
Рассредоточенная конфигурацияscattered_configКонфигурация, разбросанная по многим файлам
Дублирование кодаcode_cloneДублирование кода в проекте

Released under the MIT License.