Eslint
Overview
Заголовок раздела «Overview»ESLint в TRAIO используется как SAST/Code Quality сканер для JavaScript/TypeScript проектов. Сканер запускается внутри контейнера и формирует JSON-отчёт, который TRAIO забирает из директории /data.
ESLint запускается из установленного в образе окружения (/eslint/node_modules/.bin/eslint) и использует flat config (например, eslint.config.heavy.cjs). Это снижает риск конфликтов версий ESLint/плагинов и делает результаты воспроизводимыми.
Requirements
Заголовок раздела «Requirements»В Sequences перед этим инструментом должен быть добавлен job Code Downloader
How it works
Заголовок раздела «How it works»Сканер использует наш собранный 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 || truejq '[.[] | del(.source) | select(.messages != null and (.messages | length) > 0)]' /tmp/eslint.raw.json > /data/$REPORT_FILE_NAMEecho "ESLint report saved to /data/$REPORT_FILE_NAME"Сканер выполняет ESLint по текущей директории проекта (./) и сохраняет сырой JSON-вывод во временный файл. Затем отчёт нормализуется через jq:
- удаляется поле
source(чтобы не раздувать отчёт исходниками файлов), - остаются только файлы, где реально есть проблемы (
messages.length > 0).
Variables
Заголовок раздела «Variables»| Переменная | Пример | Обязательная | Описание |
|---|---|---|---|
| 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
- ESLint CLI: https://eslint.org/docs/latest/use/command-line-interface
- Образ и конфигурации: https://gitlab.com/traio-group/tools/-/tree/main/eslint?ref_type=heads