Форматтер stylish

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

Общая структура форматтеров ESLint

Результат работы линтера состоит из набора сообщений, сгруппированных по файлам. Каждый форматтер получает одинаковую структуру данных и преобразует её в свой формат отображения:

  • путь к файлу
  • список найденных проблем
  • номер строки и столбца
  • уровень серьёзности (warning/error)
  • идентификатор правила
  • текст сообщения

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

Принцип работы stylish

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

Типовая строка ошибки включает:

  • номер строки
  • номер столбца
  • текст сообщения
  • имя правила ESLint

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

Пример вывода stylish

/src/app.js
  10:5  error  'x' is assigned a value but never used  no-unused-vars
  14:2  error  Unexpected console statement            no-console

/src/utils.js
  3:1   warning  Missing semicolon  semi

В этом примере:

  • /src/app.js и /src/utils.js — файлы, в которых обнаружены проблемы
  • 10:5 — позиция ошибки (строка 10, столбец 5)
  • error или warning — уровень серьёзности
  • текст сообщения поясняет проблему
  • no-unused-vars, no-console, semi — правила, вызвавшие сообщение

Форматирование и визуальная структура

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

  • координаты ошибок выровнены по левому краю
  • уровни серьёзности занимают фиксированное пространство
  • сообщения отделены двумя пробелами от координат
  • блоки файлов разделены пустой строкой

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

Использование в CLI

Форматтер stylish может быть выбран явно при запуске ESLint:

eslint . --format stylish

или сокращённо:

eslint . -f stylish

Если форматтер не указан, ESLint может использовать stylish по умолчанию в некоторых конфигурациях или версиях, ориентированных на интерактивную работу в терминале.

Сравнение с другими форматтерами ESLint

json

Формат json предназначен для машинной обработки:

[
  {
    "filePath": "/src/app.js",
    "messages": [
      {
        "line": 10,
        "column": 5,
        "message": "'x' is assigned a value but never used",
        "ruleId": "no-unused-vars"
      }
    ]
  }
]

Используется в CI/CD, аналитике и интеграциях.

compact

Compact формат уменьшает объём вывода:

/src/app.js:10:5: 'x' is assigned a value but never used. (no-unused-vars)

Он менее структурирован, но занимает меньше места.

checkstyle

Используется для интеграции с системами сборки, например Jenkins. Вывод формируется в XML-структуре.

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

Особенности stylish

Stylish обладает рядом характерных свойств:

  • человекочитаемый формат без лишней структуры
  • группировка по файлам
  • отсутствие сложной вложенности
  • отсутствие JSON- или XML-обёрток
  • минимальная перегрузка информацией

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

Структура сообщения ESLint в stylish

Каждое сообщение включает несколько компонентов:

  1. Позиция (line:column)
  2. Тип (warning/error)
  3. Текст ошибки
  4. Идентификатор правила

Дополнительно могут отображаться:

  • количество проблем в файле
  • итоговая статистика по проекту

Поведение при множественных ошибках

Если в одном файле найдено несколько нарушений, они группируются под одним заголовком файла:

/src/index.js
  5:10  error  Unexpected var, use let or const  no-var
  6:1   error  Missing semicolon                 semi
  8:3   warning  Unexpected console statement    no-console

Порядок сортировки обычно соответствует порядку появления в коде.

Использование в больших проектах

В проектах с большим количеством файлов stylish может генерировать значительный объём вывода. Несмотря на это, структура остаётся читаемой благодаря:

  • разделению по файлам
  • одинаковому формату строк
  • визуальному выравниванию

При этом формат не оптимизирован для автоматического анализа результатов, что ограничивает его использование в сложных CI-сценариях.

Ограничения форматтера stylish

Несмотря на удобство, формат имеет ряд ограничений:

  • отсутствует структурированная машинная модель вывода
  • невозможность расширения формата без изменения ESLint
  • ограниченные возможности кастомизации отображения
  • отсутствие вложенных структур (например, метаданных правил)

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

Роль stylish в экосистеме ESLint

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

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