В ESLint различаются два типа сообщений: ошибки (errors) и предупреждения (warnings). Ошибки обычно считаются критическими нарушениями правил и приводят к ненулевому коду выхода процесса. Предупреждения сигнализируют о потенциальных проблемах, но не всегда блокируют выполнение проверки. В крупных проектах именно предупреждения часто становятся «шумом», который со временем накапливается и снижает ценность линтинга.
Флаг --max-warnings используется для контроля
допустимого количества предупреждений, при котором процесс ESLint
считается успешным.
Флаг --max-warnings задаёт верхний предел
допустимого количества предупреждений. Если количество warnings
превышает указанное значение, ESLint завершает выполнение с ошибочным
кодом выхода.
Базовый смысл:
Это позволяет использовать предупреждения как мягкий, но контролируемый механизм качества кода.
eslint . --max-warnings 10
В данном случае разрешено не более 10 предупреждений во всём проекте или в проверяемом наборе файлов.
Если --max-warnings не указан, ESLint не ограничивает
количество предупреждений. Процесс завершится успешно, если отсутствуют
ошибки уровня error, независимо от количества warnings.
ESLint суммирует все предупреждения, возникшие в ходе анализа файлов. В расчёт входят:
"warn"overridesНе учитываются:
"error")"off")eslint-disable)Флаг напрямую влияет на exit code:
0 — успешное завершение1 — обнаружены ошибки или превышен лимит warningsПример поведения:
eslint . --max-warnings 5
Если найдено 3 ошибки и 4 предупреждения:
Если найдено 0 ошибок и 6 предупреждений:
В системах непрерывной интеграции флаг часто используется для предотвращения роста технического долга.
Типовой сценарий:
eslint . --max-warnings 0
Такой режим означает, что:
Это создаёт строгую дисциплину качества, особенно в проектах с высокой планкой стандартизации.
В больших кодовых базах часто применяется стратегия постепенного снижения допустимого количества warnings.
Пример эволюции:
eslint . --max-warnings 50
eslint . --max-warnings 20
eslint . --max-warnings 5
eslint . --max-warnings 0
Это позволяет:
При использовании конфигураций ESLint:
.eslintrcoverridesфлаг --max-warnings остаётся глобальным и применяется ко
всему результату анализа, независимо от источника правил.
Это важно в монорепозиториях, где разные пакеты могут иметь собственные правила, но итоговый лимит warnings единый.
--quietФлаг --quiet скрывает warnings из вывода, но не
отключает их подсчёт. Это важный момент:
eslint . --quiet --max-warnings 0
Даже если warnings не отображаются, они всё равно влияют на exit code.
--max-warnings и
--fixАвтоисправление не гарантирует уменьшение количества предупреждений ниже лимита. Поведение:
--fixНеверное предположение: установка лимита означает игнорирование лишних предупреждений.
Фактически:
eslint . --max-warnings 9999
Такой подход делает флаг формальным и полностью обесценивает его контрольную функцию.
Если локально лимит не задан, а в CI установлен
--max-warnings 0, возникают ситуации:
Флаг --max-warnings используется как инструмент
управления техническим долгом:
Такой подход позволяет разделять уровни строгости без немедленного перехода к жёсткой блокировке разработки.
В актуальных версиях ESLint механизм остаётся стабильным:
В зрелых проектах флаг часто становится частью стандартной команды:
eslint . --max-warnings 0 --format stylish
или более мягкой политики:
eslint . --max-warnings 10
Выбор значения отражает уровень зрелости процесса контроля качества кода.