Как читать документацию по правилу

Каждое правило ESLint сопровождается собственной страницей документации. Такая страница содержит описание поведения правила, примеры корректного и некорректного кода, сведения о доступных параметрах настройки и дополнительную информацию о том, когда применение правила оправдано или, наоборот, нежелательно.

Умение читать документацию по правилу позволяет быстро определить:

  • какую проблему обнаруживает правило;
  • какие конструкции считаются ошибочными;
  • какие варианты кода считаются допустимыми;
  • какие параметры конфигурации доступны;
  • влияет ли правило только на стиль кода или предотвращает реальные ошибки;
  • безопасно ли автоматическое исправление через --fix.

Большинство страниц правил ESLint имеют схожую структуру, поэтому после освоения общего подхода работа с документацией становится значительно проще.


Название и краткое описание правила

В верхней части страницы обычно располагается название правила и краткое пояснение его назначения.

Например:

eqeqeq
Require the use of === and !==

Из названия не всегда понятно поведение правила, поэтому ключевую информацию содержит именно описание.

В приведённом примере становится ясно, что правило требует использования строгого сравнения:

a === b
a !== b

вместо:

a == b
a != b

Краткое описание помогает быстро определить, относится ли правило к текущей задаче.


Категория проблемы

При чтении документации важно определить, какой тип задачи решает правило.

Условно правила можно разделить на несколько групп.

Предотвращение ошибок

Такие правила помогают находить потенциальные дефекты программы.

Пример:

if (value = 10) {
}

Здесь вместо сравнения случайно выполнено присваивание.

Правило:

no-cond-assign

обнаруживает подобные ситуации.

Подобные правила обычно рекомендуется включать практически во всех проектах.

Улучшение читаемости

Некоторые правила не предотвращают ошибки напрямую, а делают код более понятным.

Например:

curly

требует использование фигурных скобок.

Без скобок:

if (ready)
    start();

Со скобками:

if (ready) {
    start();
}

Единый стиль оформления

Часть правил отвечает исключительно за стиль.

Например:

quotes
semi
comma-dangle

Они позволяют поддерживать единообразный внешний вид кода.


Раздел “Rule Details”

Практически каждая страница содержит раздел:

Rule Details

Это основной блок документации.

В нём подробно объясняется логика работы правила и приводятся примеры.

Именно с этого раздела обычно начинается детальное изучение правила.


Блок “Examples of incorrect code”

Обычно после описания располагается раздел вида:

Examples of incorrect code for this rule:

или

The following code is considered incorrect:

Здесь показаны конструкции, которые ESLint будет считать нарушением.

Например, для правила eqeqeq:

if (a == b) {
}
if (a != b) {
}

При чтении данного блока важно определить:

  • что именно считается ошибкой;
  • существует ли общий принцип для всех примеров;
  • имеются ли исключения.

Например, после анализа примеров можно сделать вывод, что правило запрещает нестрогое сравнение.


Блок “Examples of correct code”

Следующий важный раздел:

Examples of correct code for this rule:

или

The following code is considered correct:

Здесь демонстрируются допустимые варианты.

Для eqeqeq:

if (a === b) {
}
if (a !== b) {
}

Этот блок особенно полезен при миграции существующего проекта.

Некоторые правила имеют сложную логику, и только по корректным примерам становится понятно, как именно должен выглядеть код после исправления.


Анализировать некорректные и корректные примеры вместе

Наиболее эффективный способ чтения документации — сравнивать оба набора примеров одновременно.

Некорректный вариант:

foo == null

Корректный вариант:

foo === null

Такое сравнение позволяет быстро увидеть различия.

Если правило сложное, полезно выписать:

Некорректно Корректно
== ===
!= !==

Для правил с большим количеством вариантов это существенно ускоряет понимание.


Раздел Options

Многие правила поддерживают параметры конфигурации.

В документации этот раздел обычно называется:

Options

или

Options for this rule

Здесь перечисляются все допустимые настройки.

Например:

{
    "eqeqeq": ["error", "always"]
}

или

{
    "eqeqeq": ["error", "smart"]
}

Из документации можно узнать:

  • название параметра;
  • допустимые значения;
  • значение по умолчанию;
  • влияние каждой настройки на поведение правила.

Изучение значения по умолчанию

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

Например, правило может поддерживать пять различных режимов, однако без дополнительной конфигурации использовать только один из них.

Пример:

{
    "rule-name": "error"
}

и

{
    "rule-name": ["error", "strict"]
}

могут давать разные результаты.

Если значение по умолчанию не изучено, существует риск неправильной интерпретации работы правила.


Читать примеры для каждого параметра

Хорошая документация ESLint показывает примеры отдельно для каждого режима настройки.

Например:

{
    "quotes": ["error", "single"]
}

Некорректно:

const name = "Alex";

Корректно:

const name = 'Alex';

Другой режим:

{
    "quotes": ["error", "double"]
}

Теперь ситуация меняется на противоположную.

Поэтому недостаточно прочитать только список параметров — необходимо изучить примеры их использования.


Проверять наличие автоматического исправления

Некоторые страницы содержат пометки:

Fixable

или

Automatically fixable

Это означает, что правило поддерживает автоматическое исправление.

Например:

const x = "test";

может быть автоматически преобразовано в:

const x = 'test';

при запуске:

eslint . --fix

Наличие автоматического исправления особенно важно при подключении нового правила в крупном проекте.


Проверять поддержку Suggestions

Иногда в документации присутствует пометка:

Has Suggestions

Это означает, что правило способно предлагать варианты исправления через редактор кода.

Например, VS Code может показать действие:

Quick Fix

и предложить один или несколько вариантов изменения программы.

Следует понимать разницу:

  • Fixable — исправление выполняется автоматически;
  • Suggestions — предлагаются варианты действий, которые требуется подтвердить.

Изучение раздела “When Not To Use It”

Очень важный, но часто игнорируемый раздел:

When Not To Use It

Здесь описываются ситуации, когда правило может оказаться избыточным.

Например:

  • правило конфликтует с архитектурой проекта;
  • правило ориентировано только на библиотеки определённого типа;
  • правило ухудшает читаемость в некоторых сценариях.

Если документация содержит такой раздел, его необходимо читать полностью.

Иногда именно он помогает понять, почему правило отсутствует в популярных конфигурациях.


Обращать внимание на ограничения правила

Не каждое правило способно анализировать код идеально.

В документации могут быть указаны ограничения:

Known Limitations

или пояснения внутри основного текста.

Например:

  • анализ выполняется только синтаксически;
  • типы TypeScript не учитываются;
  • правило не работает для динамически создаваемых конструкций.

Подобные ограничения позволяют избежать ложных ожиданий от линтера.


Изучение версий и изменений

Многие страницы содержат информацию о том, в какой версии ESLint появилось правило.

Пример:

Introduced in ESLint v8.10.0

или аналогичная запись.

Это полезно при сопровождении старых проектов.

Если правило отсутствует в текущей версии ESLint, необходимо проверить историю его появления.

Также некоторые правила получают новые параметры в более поздних релизах.


Анализ примеров конфигурации

Документация обычно показывает реальные варианты настройки.

Например:

{
    "rules": {
        "eqeqeq": "error"
    }
}

или:

export default [
    {
        rules: {
            eqeqeq: "error"
        }
    }
];

Важно определить:

  • используется ли старая конфигурация .eslintrc;
  • используется ли новый Flat Config;
  • каким образом правило включается в проект.

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


Определение уровня серьёзности

Хотя документация правила обычно сосредоточена на поведении, полезно помнить о возможных уровнях серьёзности:

"off"
"warn"
"error"

Пример:

{
    "eqeqeq": "warn"
}

или:

{
    "eqeqeq": "error"
}

Само правило остаётся одинаковым, однако реакция линтера различается.


Поиск взаимосвязанных правил

Во многих случаях документация упоминает другие правила.

Например:

See also

или ссылки внутри описания.

Причина заключается в том, что некоторые правила решают близкие задачи.

Например:

eqeqeq

часто рассматривается вместе с:

no-eq-null

Изучение связанных правил помогает сформировать целостное понимание набора проверок.


Практическая схема чтения документации

При изучении любого правила удобно придерживаться следующего порядка:

  1. Прочитать краткое описание.

  2. Определить тип правила:

    • предотвращение ошибок;
    • читаемость;
    • стиль.
  3. Изучить раздел Rule Details.

  4. Просмотреть все некорректные примеры.

  5. Просмотреть все корректные примеры.

  6. Сравнить обе группы примеров.

  7. Изучить раздел Options.

  8. Проверить значения по умолчанию.

  9. Определить наличие Fixable.

  10. Проверить наличие Suggestions.

  11. Прочитать раздел When Not To Use It.

  12. Ознакомиться с ограничениями и особенностями реализации.

Такой подход позволяет быстро понять назначение правила, корректно настроить его в проекте и избежать распространённых ошибок при интерпретации документации ESLint.