В ESLint форматтер определяет способ представления результатов статического анализа кода. Линтер генерирует набор диагностических сообщений (ошибки, предупреждения), а форматтер преобразует их в конкретный выходной формат: человекочитаемый текст, JSON, XML или специализированные структуры для CI/CD систем.
Форматы checkstyle и junit относятся к категории XML-ориентированных отчетов, предназначенных для интеграции с системами непрерывной интеграции и инструментами анализа качества кода.
Форматтер checkstyle формирует XML-отчет, совместимый с экосистемой инструментов, ориентированных на стандарт Checkstyle. Такой формат широко используется в CI-системах (Jenkins, GitLab CI, Bamboo) для визуализации и агрегации результатов анализа кода.
Каждый файл анализируемого проекта представлен отдельным узлом
<file>. Внутри перечисляются найденные проблемы.
Пример базовой структуры:
<?xml version="1.0" encoding="utf-8"?>
<checkstyle version="8.0">
<file name="src/index.js">
<error line="3" column="5" severity="error" message="Unexpected console statement." source="eslint.rules.no-console"/>
<error line="10" column="1" severity="warning" message="Missing semicolon." source="eslint.rules.semi"/>
</file>
</checkstyle>
file
name — путь к файлу относительно корня проектаerror
line — строка, где обнаружена проблемаcolumn — позиция в строкеseverity — уровень (error / warning)message — описание нарушения правилаsource — идентификатор правила ESLintЗапуск ESLint с генерацией checkstyle-отчета выполняется через CLI:
eslint -f checkstyle src/
Результат может быть перенаправлен в файл:
eslint -f checkstyle src/ > report.xml
Checkstyle-формат широко поддерживается Jenkins через плагины анализа
кода. После генерации report.xml файл подключается как
артефакт анализа:
eslint -f checkstyle src/ > checkstyle-report.xml
Далее отчет обрабатывается плагином Checkstyle Plugin, который отображает:
В GitLab CI XML может использоваться как артефакт:
lint:
script:
- eslint -f checkstyle src/ > checkstyle.xml
artifacts:
reports:
codequality: checkstyle.xml
Форматтер junit преобразует результаты ESLint в XML-структуру, совместимую с JUnit-отчетами тестовых фреймворков. Это позволяет интегрировать результаты линтинга в системы, ожидающие тестовые отчеты (например, Jenkins Test Report, GitLab Test Summary, CircleCI).
JUnit-формат представляет собой набор тестовых наборов
(testsuite), внутри которых находятся тест-кейсы
(testcase). Каждое правило ESLint может интерпретироваться
как отдельный тест.
Пример:
<?xml version="1.0" encoding="utf-8"?>
<testsuites>
<testsuite name="eslint" tests="2" failures="2">
<testcase name="src/index.js: no-console" classname="no-console">
<failure message="Unexpected console statement.">
src/index.js:3:5
</failure>
</testcase>
<testcase name="src/index.js: semi" classname="semi">
<failure message="Missing semicolon.">
src/index.js:10:1
</failure>
</testcase>
</testsuite>
</testsuites>
testsuites
testsuite
логический набор проверок ESLint
атрибуты:
name — имя набора (обычно eslint)tests — общее число проверокfailures — количество нарушенийtestcase
единичная проверка (правило + место в коде)
атрибуты:
name — идентификатор файла и правилаclassname — имя ESLint-правилаfailure
CLI-команда:
eslint -f junit src/
Запись в файл:
eslint -f junit src/ > junit-report.xml
JUnit-формат является нативно поддерживаемым Jenkins. После выполнения ESLint отчет подключается как тестовый результат:
eslint -f junit src/ > eslint-junit.xml
Далее Jenkins Test Report Plugin отображает:
lint:
script:
- eslint -f junit src/ > junit.xml
artifacts:
reports:
junit: junit.xml
- run:
name: ESLint
command: eslint -f junit src/ > junit.xml
- store_test_results:
path: junit.xml
JUnit-формат требует интерпретации линтера как тестовой системы:
Такой подход позволяет:
В многоэтапных CI/CD процессах оба форматтера могут использоваться параллельно:
Пример комбинированного запуска:
eslint -f checkstyle src/ > checkstyle.xml
eslint -f junit src/ > junit.xml
Дальнейшая обработка:
source или
classnameВ крупных кодовых базах с тысячами файлов XML-форматы позволяют:
При этом выбор между checkstyle и junit определяется моделью CI-системы: ориентированной на качество кода или на тестовую инфраструктуру.