Перейти к содержимому
traio.kz

Eslint

ESLint в TRAIO используется как SAST/Code Quality сканер для JavaScript/TypeScript проектов. Сканер запускается внутри контейнера и формирует JSON-отчёт, который TRAIO забирает из директории /data.

ESLint запускается из установленного в образе окружения (/eslint/node_modules/.bin/eslint) и использует flat config (например, eslint.config.heavy.cjs). Это снижает риск конфликтов версий ESLint/плагинов и делает результаты воспроизводимыми.

В Sequences перед этим инструментом должен быть добавлен job Code Downloader

Сканер использует наш собранный docker-образ на основе ESLint дополненный плагинами и конфигурациями:

registry.gitlab.com/traio-group/tools/eslint:26.02.2

Команда запуска:

Окно терминала
/eslint/node_modules/.bin/eslint -c "$CONF" -f json ./ > /tmp/eslint.raw.json || true
jq '[.[]
| del(.source)
| select(.messages != null and (.messages | length) > 0)
]' /tmp/eslint.raw.json > /data/$REPORT_FILE_NAME
echo "ESLint report saved to /data/$REPORT_FILE_NAME"

Сканер выполняет ESLint по текущей директории проекта (./) и сохраняет сырой JSON-вывод во временный файл. Затем отчёт нормализуется через jq:

  • удаляется поле source (чтобы не раздувать отчёт исходниками файлов),
  • остаются только файлы, где реально есть проблемы (messages.length > 0).
Переменная Пример Обязательная Описание
REPORT_FILE_NAME eslint.json Дf Имя файла отчёта, который TRAIO забирает из /data.
SCAN_TYPE ESLint Scan Да Тип сканирования для парсинга в TRAIO.
CONF /eslint/eslint.config.heavy.cjs Да Путь к ESLint flat config внутри контейнера. Используется для переключения режимов (light/heavy).
  • Критичность: Уязвимости ESLint показываются дефолтно как низкие в связи с отсутствием критичности от ESLint, можно изменить в настройках парсера
  • Варианты конфигурации:
    • /eslint/eslint.config.heavy.cjs
    • /eslint/eslint.config.light.cjs