Расширение CodeScoring SCA для Visual Studio Code¶
Расширение предоставляет возможности анализа состава программного обеспечения (SCA) для VS Code, подсвечивая уязвимые зависимости в файлах Вашего проекта и предоставляя подробную информацию об уязвимостях через интеграцию с Johnny CLI.
Расширение CodeScoring SCA поддерживает версии Visual Studio Code 1.95.0 и выше.
Поддерживаемые экосистемы¶
Языки и менеджеры пакетов¶
Экосистема | Файлы манифестов | Сгенерированные файлы версий |
---|---|---|
JavaScript/Node | package.json | package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml, npm-lock.yaml |
Python | setup.py, pyproject.toml, Pipfile, require.txt, require.pip | Pipfile.lock, poetry.lock |
Java | pom.xml, ivy.xml, .gradle, .gradle.kts | gradle.lockfile, maven-dependency-tree.txt, gradle-dependency-tree.txt |
Ruby | Gemfile, gems.rb, *.gemspec | Gemfile.lock, gems.locked |
Go | go.mod | go.sum |
Rust | Cargo.toml | Cargo.lock |
PHP | composer.json | composer.lock |
C#/.NET | .csproj, packages.config, Project.json, paket.dependencies, .nuspec | packages.lock.json, Project.lock.json, paket.lock, project.assets.json, dependencyReport.json |
Swift | Package.swift | Package.resolved |
Objective-C | Podfile, *.podspec | Podfile.lock |
Conda | environment.yml, environment.yaml, meta.yml, meta.yaml | conda-lock.yml |
Conan (C/C++) | conanfile.txt, conanfile.py | conan.lock |
Обнаружение файлов по умолчанию¶
- Автоматическое: Сканирует все поддерживаемые файлы
- Рекурсивное: Ищет в подкаталогах
Точная настройка сканирования производится с помощью модификации config.yaml файла
Начало работы¶
Предварительные требования¶
Перед началом убедитесь, что у Вас есть:
- Visual Studio Code, установленный в Вашей системе
- Доступ к установке CodeScoring с активными учетными данными
- Дистрибутив codescoring-sca расширения для vscode (.vsix)
Требуемые разрешения¶
- Файловая система: Чтение файлов проекта, запись файлов .codescoring, загрузка исполняемого файла, выполнение загруженного CLI
- Сеть: Связь с CodeScoring API
- API VS Code: Интеграция с редактором
Шаг 1: Загрузите расширение¶
Расширение поставляется в виде платформенно-независимого файла codescoring-sca-<version>.vsix
.
Шаг 2: Установите расширение из файла VSIX¶
- Откройте Visual Studio Code
- Перейдите в Файл → Настройки → Расширения (или нажмите
Ctrl+Shift+X
илиCmd+Shift+X
на MacOS) - Нажмите на меню с тремя точками (...) в правом верхнем углу панели расширений
- Выберите "Установить из VSIX..." из выпадающего меню
- Перейдите к месту, куда вы сохранили файл
.vsix
- Выберите файл и нажмите "Установить"
- Дождитесь завершения установки
Шаг 3: Найдите расширение CodeScoring¶
После установки вы должны увидеть логотип CodeScoring в панели действий VS Code (боковая панель слева).
- Нажмите на иконку CodeScoring в панели действий
- Откроется боковая панель "CODESCORING: CODESCORING SCA"
Шаг 4: Настройте расширение¶
- В боковой панели CodeScoring SCA нажмите кнопку "Configure Extension"
- Откроется страница настроек CodeScoring SCA
4.1 Проверьте URL API¶
- В настройках найдите поле API URL
- Вам необходимо использовать URL CodeScoring, установленного в Вашей организации. При необходимости, обратитесь к администратору.
4.2 Сгенерируйте и установите токен API¶
- Откройте веб-браузер и перейдите по адресу:
<API URL>/cabinet/profile
- Войдите в свою учетную запись CodeScoring
- Убедитесь, что вы находитесь на странице своего профиля
- Найдите поле "API token"
- Нажмите кнопку "Generate" рядом с полем токена API
- Скопируйте значение сгенерированного токена API
- Вернитесь к настройкам VS Code
- Нажмите на ссылку "Set API Token" в настройках плагина
- Вставьте скопированный токен при появлении запроса
- Плагин должен отобразить подтверждение, что токен действителен
4.3 Загрузите Johnny CLI¶
- Перейдите на страницу релизов:
<API URL>/download/
(обратите внимание на завершающую косую черту) - Загрузите последний релиз исполняемого файла в зависимости от Вашей операционной системы
4.4 Настройте Johnny CLI¶
Существует три способа получить Johnny CLI для анализа Ваших зависимостей с помощью нашего сервиса.
4.4.1 Локальная установка
Предварительные требования:
- Файл запуска Johnny CLI должен быть загружен и сделан исполняемым в системе
- Операционная система должна разрешать запуск исполняемого файла (для проверки запустите один раз файл в консоли с параметром --help вручную)
Шаги настройки:
-
Установите тип установки на Local
-
В настройках VS Code измените
installationType
наlocal
- Или в settings.json:
- В настройках найдите поле
Codescoring Sca: Johnny Cli Path
, помеченное [LOCAL INSTALLATION ONLY] - Нажмите на ссылку действия "Browse..."
- Перейдите к месту, где вы ранее загрузили Johnny CLI
- Выберите исполняемый файл Johnny CLI
Примечание: Если плагин спросит об изменении прав доступа к файлу (chmod +x), нажмите "Yes", чтобы разрешить плагину сделать файл исполняемым.
4.4.2 Автоматическая загрузка клиента
Предварительные требования:
- Должен быть настроен API URL
- Должен быть настроен токен API и валидация должна пройти успешно
Шаги настройки:
-
Установите тип установки на Local
-
В настройках VS Code измените
installationType
наlocal
-
Или в settings.json:
-
В настройках найдите поле
Codescoring Sca: Johnny Cli Path
, помеченное [LOCAL INSTALLATION ONLY] - Очистите, если необходимо, значение в этом поле (пустое значение - это значение по умолчанию)
- Теперь при первом запросе сканирования Johnny CLI будет загружен с API URL. Это позволит Вам автоматически получить
обновление клиента, как только оно будет доступно. Загруженный клиент будет сохранен в следующем месте:
- Linux:
~/.config/Code/User/globalStorage/CodeScoring.codescoring-sca/johnny
- Windows:
%APPDATA%\Code\User\globalStorage\CodeScoring.codescoring-sca\johnny.exe
- MacOS:
~/Library/Application Support/Code/User/globalStorage/CodeScoring.codescoring-sca/johnny
- Linux:
4.4.3 Использование Docker
Установка Docker позволяет запускать Johnny CLI в изолированном контейнере, что полезно, когда вы не хотите устанавливать его непосредственно в Вашей системе.
Предварительные требования:
- Docker должен быть установлен и запущен в Вашей системе
- Ваш пользователь должен иметь права на выполнение команд Docker
Шаги настройки:
-
Установите тип установки на Docker
-
В настройках VS Code измените
installationType
наdocker
- Или в settings.json:
-
Настройте Docker образ
-
Образ:
johnny-depp:2025.29.0
(по умолчанию) - Реестр:
<адрес-реестра-кодскоринг>
-
Пример полного пути к образу:
sample-codescoring-registry.com/johnny-depp:2025.29.0
-
Опционально: Дополнительные опции Docker Добавьте пользовательские опции запуска Docker при необходимости:
Как это работает:
- Клиент автоматически монтирует каталог Вашего проекта в контейнер
- Сканирование выполняется внутри контейнера, а результаты сохраняются в Вашем проекте
- Ручные команды Docker не требуются - расширение обрабатывает все автоматически
Пример конфигурации Docker:
{
"codescoringSca.installationType": "docker",
"codescoringSca.dockerImage": "johnny-depp:2025.29.0",
"codescoringSca.dockerRegistry": "sample-codescoring-registry.com",
"codescoringSca.dockerOptions": ""
}
Устранение неполадок с установкой Docker:
- "Docker not found": Убедитесь, что Docker установлен и команда
docker
находится в Вашем PATH - Permission denied: Добавьте Вашего пользователя в группу docker:
sudo usermod -aG docker $USER
- Image pull failed: Проверьте учетные данные реестра и сетевое подключение
- Container exits immediately: Проверьте панель вывода VS Code для получения подробных сообщений об ошибках
Шаг 5: Запустите первое сканирование¶
Теперь, когда расширение настроено, вы можете запустить первое сканирование уязвимых зависимостей:
Метод 1: Использование боковой панели¶
- Откройте папку проекта в VS Code
- Нажмите на иконку CodeScoring в панели действий
- В боковой панели "CODESCORING: CODESCORING SCA" нажмите кнопку "Run Scan"
Метод 2: Использование палитры команд¶
- Нажмите
Ctrl+Shift+P
(илиCmd+Shift+P
на MacOS), чтобы открыть палитру команд - Введите "Run Johnny CLI Scan"
- Выберите "CodeScoring SCA: Run Johnny CLI Scan" из списка
Метод 3: Использование строки состояния¶
- Посмотрите на нижнюю строку состояния VS Code
- Найдите индикатор "CodeScoring CLI"
- Нажмите на него, чтобы открыть меню Johnny CLI
- Выберите "Run Johnny CLI Scan" из списка
Шаг 6: Тонкая настройка конфигурации сканирования¶
После завершения сканирования вы увидите новый каталог .codescoring
, содержащий:
config.yaml
- файл конфигурации для Johnny CLI, вы можете прочитать о нем в этом разделе. Вы можете менять этот файл, так как он никогда не будет перезаписан.report.html
- отчет, сгенерированный в формате html, содержащий вывод Johnny CLI в формате цветной таблицы. Перезаписывается во время каждого сканирования.bom.json
- файл результатов сканирования, созданный Johnny CLI в формате cyclone-dx 1.6, он будет загружен автоматически и показан в панели уязвимостей для любой открытой в VSCode директории, в которой существует .codescoring/bom.jsonbom.json.N
- где N - это ревизия сканирования, т.е. 0 - предыдущее сканирование, а 5 (например) - самое первое сканирование, и bom.json.0 будет использоваться для сравнения с bom.json (и показан в дереве DIFF), если он существует на момент открытия новой папки
your-project/
├── .codescoring/
│ ├── config.yaml # Конфигурация сканирования
│ ├── report.html # Последний отчет сканирования
│ ├── bom.json # Текущие уязвимости
│ ├── bom.json.0 # Предыдущее сканирование (сравнение)
│ └── bom.json.1 # Более старые сканирования...
├── package.json # Ваши зависимости
└── ... Ваш код ...
Пример использования конфигурации сканирования CodeScoring¶
Отредактируйте .codescoring/config.yaml
для настройки:
scan:
general:
ignore: # Директории для пропуска
- node_modules
- .git
- test
with-hashes: true # Включить хеши файлов для точного сопоставления
only-hashes: false # Использовать только обнаружение на основе хешей
dir:
no-recursion: false # Предотвращает рекурсивное сканирование корневой директории
Шаг 7: Просмотр результатов сканирования¶
После завершения сканирования:
- Проверьте уведомления: Посмотрите на уведомления в правом нижнем углу VS Code, нажав на "View Report"
- Откройте дерево уязвимостей (открывается само по умолчанию): Используйте кнопку "Open Vulnerabilities View" из боковой панели
- Просмотрите уязвимости: Панель уязвимостей покажет все обнаруженные проблемы безопасности в Ваших зависимостях
- Изучите детали: Вы можете нажимать на отдельные уязвимости, чтобы увидеть подробную информацию
- Примените исправления: Используйте опции быстрого исправления для обновления уязвимых зависимостей
7.1 Подсветка уязвимостей¶
- Подсветка в коде: Уязвимые зависимости подсвечиваются по мере ввода
- Цвета критичности:
- 🔴 Критический (красный)
- 🟠 Высокий (оранжевый)
- 🟡 Средний (желтый)
- 🔵 Низкий (синий)
- Поддержка нескольких файлов: Работает со всеми поддерживаемыми типами файлов
- Наведите курсор на подсвеченные зависимости, чтобы увидеть детали уязвимостей
7.2 Информация при наведении¶
При наведении курсора на подсвеченные зависимости отображается:
- Идентификатор уязвимости: Номер CVE со ссылкой
- Критичность: Оценка CVSSv3 и уровень
- Описание: Что затрагивает уязвимость
- Ссылки на источники: Информация об официальной регистрации уязвимости, патчах, эксплойтах и прочем
- Быстрое исправление: Опция обновления в один клик
7.3 Панель уязвимостей¶
7.3.1 Структура древовидного представления
📊 Уязвимости (247)
├── 🔴 Критические (12)
│ ├── CVE-2023-1234 - Удаленное выполнение кода
│ │ ├── lodash@4.17.20 → 4.17.21
│ │ └── package.json:15
│ └── ...
├── 🟠 Высокие (45)
├── 🟡 Средние (89)
└── 🔵 Низкие (101)
7.3.2 Опции группировки
- Используйте панель уязвимостей для фильтрации по критичности, пакету или другим критериям
- Группируйте уязвимости по различным категориям для лучшей организации
Изменение группировки через кнопку панели инструментов или команду:
- По критичности -> Расположению (по умолчанию): По уровню критичности, подгруппировка по пакету
- По критичности -> Пакету (PURL): По уровню критичности, подгруппировка по имени пакета в алфавитном порядке
- По расположению: Группировка по пути к файлу
- По пакету (PURL): Группировка по пакету
7.4 Поиск и фильтрация¶
Возможности поиска
- Несколько полей: Поиск по:
- Имени пакета (например, "lodash")
- Идентификатору CVE (например, "CVE-2023")
- Пути к файлу (например, "frontend/")
- Уровню критичности
- Нечеткое сопоставление: Находит частичные совпадения, если не используются кавычки
- Точное совпадение: Используйте кавычки
- Без учета регистра: Не требуется точный регистр
7.5 Быстрые исправления¶
Быстрые исправления
- Нажмите на предлагаемые обновления версий при наведении мышкой на уязвимый компонент, чтобы автоматически обновить на последнюю версию зависимости
- При нажатии
Ctrl+.
(Cmd+.
на MacOS), когда курсор находится на уязвимом компоненте, Вам предложится выбрать конкретную версию для обновления (при наличии нескольких)
Индивидуальные исправления
- Наведите курсор мыши на уязвимую зависимость
- Нажмите на предлагаемую версию во всплывающей подсказке
- После обновления Вы увидите сообщение об успешном изменении
или
- Наведите курсор клавиатуры на уязвимую зависимость
- Нажмите
Ctrl+.
(Cmd+.
на MacOS) - Выберите подходящую версию из списка, если их несколько
или
- Кнопка Fix Selected: Выберите один уязвимый компонент или уязвимость, принадлежащую этому компоненту, и компонент будет обновлен до последней безопасной версии
Массовые исправления
- Кнопка Fix All: Обновляет все уязвимые компоненты с доступными исправлениями, видимые в данный момент в дереве, при этом учитывает примененные фильтры (установленные с помощью кнопки с лупой на панели инструментов)
7.6 Работа с файлами BOM¶
Автозагрузка
Расширение автоматически загружает файлы BOM из:
.codescoring/bom.json
(основной)bom.json
(корневой каталог)
Ручные операции
- Загрузить BOM:
Ctrl+Shift+P
(илиCmd+Shift+P
на MacOS) → "Load BOM File" - Закрыть BOM: Очищает все данные об уязвимостях и освобождает память
7.7 Сравнение BOM¶
Сравнивается полный состав всех компонентов, а не только уязвимых. С помощью сравнения можно увидеть различия в полном перечне используемых компонентов и отследить изменения версий. При этом старые версии компонентов будут показаны как удаленные, а новые - как добавленные. Чтобы удобнее было отслеживать изменения в версиях компонентов, можно сгруппировать их по имени пакета (см ниже).
Автоматическое сравнение
При открытии проекта:
- Загружает текущий BOM (
bom.json
) - Сравнивает с предыдущим (
bom.json.0
) - Показывает уведомление об изменениях
Ручное сравнение при открытом BOM
- Имеется загруженный BOM (целевой)
- Выполните команду "Compare BOMs"
- Выберите базовый файл BOM
- Отобразится результат сравнения в панели DIFF
Ручное сравнение двух произвольных BOM
- Закройте BOM при необходимости
- Выполните команду "Compare BOMs"
- Выберите базовый файл BOM для сравнения
- Выберите целевой файл BOM для сравнения с базовым
- Отобразится результат сравнения в панели DIFF
Представления сравнения
📊 BOM DIFF (Изменения: 23 добавлено, 15 удалено, 45 обновлено, 73 без изменений)
├── ➕ Добавлено (23)
│ ├── [ADDED] react@18.1.3 0 уязвимостей
│ └── ...
├── ➖ Удалено (15)
├── 🔄 Обновлено (45)
│ ├── [UPDATED] lodash: 4.17.20
│ └── ...
└── ✓ Без изменений (73)
Опции группировки сравнения
- По типу изменения: Добавлено/Удалено/Обновлено/Без изменений (примечание: обновлено означает, что количество уязвимостей было обновлено для компонента)
- По пакету: Алфавитная группировка пакетов без версии. Это наиболее полезная группировка для просмотра обновленных компонентов (добавленная версия и удаленная версия будут сгруппированы вместе)
- По расположению: Группировка по пути к файлу
- По критичности: Группировка по влиянию уязвимости
Фильтрация сравнения
Вы также можете искать/фильтровать дерево BOM DIFF, чтобы сосредоточиться на интересующих Вас компонентах. Чтобы очистить поиск, нажмите кнопку "Clear Comparison Search" в правом верхнем углу BOM DIFF.
7.8 Отчеты¶
Отчеты сканирования
- Автоматически генерируются: Создаются после каждого сканирования
- Расположение:
.codescoring/report.html
- Формат: Цветной HTML
- Содержимое:
- Статус сканирования
- Выполненная команда
- Сводка результатов
- Найденные уязвимости
- Предупреждения от политик
- Сообщения об ошибках
Просмотр отчетов
- Команда: "View Latest Scan Report"
- Открывается в: Предварительном просмотре HTML в VS Code
- Адаптируется к выбранной цветовой схеме VSCode в момент генерации
7.9 Настройки и кастомизация¶
Список доступных настроек
Настройка | Описание | По умолчанию |
---|---|---|
apiUrl |
Ваш URL с установленной CodeScoring | |
apiToken |
API токен. Безопасно сохраняется | (устанавливается командой) |
installationType |
local или docker | local |
johnnyCliPath |
Путь к Johnny CLI (пустой для автозагрузки) | (автозагрузка) |
dockerImage |
Имя docker образа c Johnny CLI | johnny-depp:2025.29.0 |
dockerRegistry |
Реестр с образом Johnny CLI | (предоставляется заботой) |
dockerOptions |
Дополнительные опции docker | |
enableHighlighting |
Показывать подсветку в коде | true |
enableHover |
Показывать всплывающие подсказки | true |
enableQuickFixes |
Разрешить исправления в один клик | true |
showVulnerabilityHeaders |
Отображать заголовки для колонок уязвимостей | false |
paginationSize |
Количество элементов на странице | 100 |
batchProcessingSize |
Количество элементов для обработки за раз | 100 |
severityColors |
Пользовательское сопоставление цветов | (цвета по умолчанию) |
Горячие клавиши
Настройте в параметрах VS Code, например:
Устранение неполадок¶
Логи расширения¶
- Для подробного понимания шагов функциональности проверьте лог файл расширения, расположенный:
- Windows:
%USERPROFILE%\.vscode\extensions\codescoring-sca-[version]\out\logs\extension.log
- macOS/Linux:
~/.vscode/extensions/codescoring-sca-[version]/out/logs/extension.log
- Windows:
Распространенные проблемы¶
Проблемы сканирования
Проблема | Решение |
---|---|
Сканирование зависает | Попробуйте запустить файл cli вручную, убедитесь, что операционная система и антивирус позволяют ему работать, проверьте интернет-соединение, проверьте токен API |
Нет результатов | Убедитесь, что проект имеет файлы зависимостей, проверьте вывод report.html |
Частичные результаты | Проверьте шаблоны игнорирования в конфигурации |
Проблемы отображения
Проблема | Решение |
---|---|
Нет подсветки | Включите в настройках, перезагрузите окно |
Неправильные цвета | Проверьте совместимость темы |
Отсутствует панель | Вид → Открыть вид → Уязвимости |
Не показываются всплывающие подсказки | Включите наведение в настройках |
Проблемы исправления
Проблема | Решение |
---|---|
Исправление не удается | Проверьте права на запись |
Неправильная версия | Вручную укажите в файле пакета |
Ломает проект | Используйте контроль версий, откатитесь |
Конфликты | Исправляйте по одному |
Свяжитесь с отделом заботы: support@codescoring.ru
Безопасность и конфиденциальность, обработка данных¶
- Локальное сканирование: Код не отправляется на серверы
- Связь с API: Передаются только метаданные (конфигурационные файлы Вашего пакетного менеджера)
- Хранение токенов: Безопасное хранилище учетных данных VS Code
Рекомендации¶
Рекомендации по рабочему процессу¶
- Начальная настройка: Полное сканирование при запуске проекта
- Обзоры: Сравнивайте BOM между версиями
-
CI/CD:
-
Перед коммитом: Выполните полное сканирование
- Поделитесь конфигурацией: Закоммитьте
.codescoring/config.yaml
- Игнорируйте временные файлы: Добавьте в
.gitignore
: - Отслеживайте основной BOM: Версионируйте
.codescoring/bom.json
- Стандартизируйте: Стандартизируйте настройки расширения
Интеграция с процессами разработки¶
-
Code Review:
- Проверяйте изменения зависимостей
- Требуйте исправления критических уязвимостей
- Документируйте принятые риски
-
Release Management:
- Генерируйте отчеты для каждого релиза
- Отслеживайте улучшения безопасности
- Планируйте обновления зависимостей
-
Compliance:
- Экспортируйте BOM для аудита
- Отслеживайте лицензии компонентов
- Поддерживайте историю сканирований