Skip to content

Высокая сложность

ID: complexity | Степень критичности: Средняя (по умолчанию)

Этот детектор находит функции с высокой цикломатической сложностью.

Почему это «запах»

  • Трудность понимания: Слишком много путей ветвления делают код сложным для восприятия.
  • Склонность к ошибкам: Выше вероятность упустить граничные случаи при тестировании.
  • Кошмар поддержки: Небольшие изменения могут иметь непредсказуемые последствия из-за сложной логики.

Как исправить

  1. Extract Method: Разбейте сложную логику на более мелкие именованные функции.
  2. Guard Clauses: Используйте ранние возвраты (early returns), чтобы уменьшить уровень вложенности.
  3. Replace Conditional with Polymorphism: Используйте объекты или стратегии вместо огромных блоков switch или if/else.

Конфигурация

yaml
rules:
  complexity:
    severity: medium
    max_complexity: 15

ESLint правило

Этот детектор доступен как правило ESLint для получения обратной связи в реальном времени.

javascript
// eslint.config.js
export default [
  {
    rules: {
      '@archlinter/no-high-complexity': 'warn',
    },
  },
];

Смотрите Интеграция с ESLint для инструкций по настройке.

Параметры по умолчанию

  • function_threshold: 10 - максимальная цикломатическая сложность функции
  • file_threshold: 50 - максимальная цикломатическая сложность файла

Released under the MIT License.