Результаты работы ESLint представляют собой стандартизированную структуру данных, формируемую после анализа одного или нескольких файлов. Независимо от способа запуска — CLI или программный API — итоговая модель данных сохраняет единый принцип: каждый файл имеет собственный объект результата, содержащий метаинформацию, список проблем и сведения о возможных исправлениях.
Основная единица результата — объект отчёта по файлу:
Такой подход позволяет рассматривать анализ как набор независимых, но агрегируемых сущностей.
Ключевой частью результата является массив messages.
Каждый элемент массива описывает отдельное нарушение правила или
потенциальную проблему в коде.
Типичная структура сообщения:
ruleId — идентификатор правила ESLintseverity — уровень серьёзности (0, 1, 2)message — текстовое описание проблемыline, column — позиция в файлеendLine, endColumn — конечная позиция
(если применимо)nodeType — тип AST-узлаfix — объект автоисправления (если доступно)fatal — критическая ошибка парсинга0 — отключено1 — предупреждение2 — ошибкаС точки зрения обработки результатов именно severity
определяет итоговое поведение CLI и возможность блокировки процесса.
Если правило поддерживает автоматическое исправление, в сообщении
появляется поле fix. Оно описывает изменение исходного
кода:
range — диапазон символов
[start, end]text — строка заменыПример логики применения: ESLint не изменяет файл напрямую во время анализа, а только формирует набор исправлений. Их применение происходит отдельно через механизм фиксации.
Автоисправления могут пересекаться, что требует дополнительной обработки конфликтов при пакетном применении.
Общий объект результата анализа одного файла включает:
filePath — путь к анализируемому файлуmessages — массив проблемerrorCount — количество ошибокwarningCount — количество предупрежденийfatalErrorCount — ошибки парсингаfixableErrorCount — количество исправляемых ошибокfixableWarningCount — количество исправляемых
предупрежденийsource — исходный код (опционально)Эти поля формируются после завершения анализа AST и выполнения всех подключённых правил.
При анализе нескольких файлов ESLint возвращает массив таких объектов. Дополнительно вычисляются агрегированные метрики:
Именно агрегированные данные определяют exit code процесса:
0 — проблем нет1 — найдены ошибки или нарушения правилПри запуске ESLint через командную строку результаты проходят через форматтеры. Внутренний результат не изменяется — трансформируется только представление.
stylish — человекочитаемый выводjson — структурированный формат для машинной
обработкиcompact — сжатый текстовый форматcheckstyle — интеграция с CI-системамиhtml — отчёт в виде HTML-документаJSON-вывод является наиболее важным для программной обработки. Он сохраняет структуру результатов без потерь:
Такой формат используется в пайплайнах CI/CD, аналитике качества кода и интеграциях с внешними инструментами.
ESLint предоставляет программный интерфейс, позволяющий получать результаты напрямую без CLI.
Основной класс:
ESLintМетоды:
lintFiles(patterns) — анализ файлов по
glob-шаблонамlintText(code, options) — анализ строки кодаРезультат этих методов — массив объектов, идентичных CLI-структуре.
При использовании API важно учитывать:
После получения результатов можно применить исправления к файловой системе.
Используется метод:
ESLint.outputFixes(results)Логика работы:
fix-объектыВажно, что порядок применения влияет на итоговый код, особенно при пересекающихся диапазонах исправлений.
Типичный процесс обработки можно разложить на этапы:
Каждый этап отделён и может быть переопределён в пользовательских сценариях.
ESLint позволяет создавать собственные форматтеры для обработки результатов.
Форматтер получает на вход массив результатов и возвращает строку.
Внутри доступны все данные:
Это позволяет строить:
Отдельную категорию составляют критические ошибки парсинга. Они возникают до применения правил и связаны с невозможностью построить AST.
Особенности:
ruleIdfatal: trueТакие ошибки учитываются отдельно от стандартных правил и увеличивают
fatalErrorCount.
Каждое сообщение привязано к конкретному узлу AST через
nodeType и позиционные данные.
Это позволяет:
Результаты не содержат сам AST, но полностью опираются на него как на источник диагностики.
Обработка результатов часто включает агрегацию:
ruleIdТакой подход используется для построения аналитики качества кода и контроля технического долга.
В CI-средах результаты ESLint интерпретируются как сигнал качества кода:
Особое значение имеет стабильность структуры результата, что позволяет интегрировать ESLint в любые системы без адаптации под версию CLI.
При анализе больших кодовых баз структура результатов может содержать тысячи сообщений. Для эффективной обработки используются:
ESLint оптимизирует генерацию сообщений, но обработка результатов часто становится узким местом в пользовательских интеграциях.
На уровне API возможны дополнительные сценарии:
Такие подходы используют неизменность структуры результата как базовое свойство.