Высокая сложность
ID: complexity | Степень критичности: Средняя (по умолчанию)
Этот детектор находит функции с высокой цикломатической сложностью.
Почему это «запах»
- Трудность понимания: Слишком много путей ветвления делают код сложным для восприятия.
- Склонность к ошибкам: Выше вероятность упустить граничные случаи при тестировании.
- Кошмар поддержки: Небольшие изменения могут иметь непредсказуемые последствия из-за сложной логики.
Как исправить
- Extract Method: Разбейте сложную логику на более мелкие именованные функции.
- Guard Clauses: Используйте ранние возвраты (early returns), чтобы уменьшить уровень вложенности.
- Replace Conditional with Polymorphism: Используйте объекты или стратегии вместо огромных блоков
switchилиif/else.
Конфигурация
yaml
rules:
complexity:
severity: medium
max_complexity: 15ESLint правило
Этот детектор доступен как правило ESLint для получения обратной связи в реальном времени.
javascript
// eslint.config.js
export default [
{
rules: {
'@archlinter/no-high-complexity': 'warn',
},
},
];Смотрите Интеграция с ESLint для инструкций по настройке.
Параметры по умолчанию
function_threshold:10- максимальная цикломатическая сложность функцииfile_threshold:50- максимальная цикломатическая сложность файла