Использование расширения PVS-Studio для Visual Studio Code
- Смотри, а не читай (ВК Видео)
- Установка расширения
- Запуск анализа
- Анализ C, C++ (CMake) проектов
- Анализ C++ и C# (MSBuild) проектов
- Анализ Java проектов
- Работа с результатами анализа
- Конфигурация плагина
- Работа с версиями плагина PVS-Studio
С помощью специализированного расширения PVS-Studio для Visual Studio Code можно просматривать результаты анализа, запускать анализ CMake, MSBuild и Java проектов, а также пользоваться мониторингом компиляции на Windows. Ниже рассмотрим, как пользоваться этим расширением.
Обратите внимание, что предварительно вам потребуется скачать и установить анализатор.
Смотри, а не читай (ВК Видео)
Установка расширения
Рассмотрим возможные сценарии установки расширения.
Примечание. Минимальная поддерживаемая версия Visual Studio Code для работы с расширением — 1.74.0.
С помощью маркетплейса расширений
Чтобы установить расширение PVS-Studio, откройте Visual Studio Code и перейдите на вкладку Extensions, затем введите в поле поиска "PVS-Studio" и кликните по кнопке Install:

Обратите внимание, что с помощью маркетплейса устанавливается только расширение PVS-Studio для Visual Studio Code. Для его работы в системе также должен быть установлен анализатор. Скачать его можно здесь.
С помощью установщика PVS-Studio
При установке анализатора на Windows можно выбрать пункт Integration with Visual Studio Code в меню установщика, и тогда расширение PVS-Studio добавится в Visual Studio Code автоматически при установке анализатора.

С помощью .vsix файла
Файл расширения PVS-Studio в формате .vsix можно получить со страницы PVS-Studio в Visual Studio Marketplace.
Файл расширения pvs-studio-vscode-*.vsix распаковывается при установке анализатора (путь по умолчанию: PROGRAMFILES(x86)%\PVS-Studio).
Для установки расширения из такого файла необходимо во вкладке Extensions в правом верхнем углу нажать на три точки и выбрать пункт Install from VSIX:

Результат установки
После установки расширения окно PVS-Studio появится в качестве одной из вкладок на нижней панели Visual Studio Code. В случае, если окно PVS-Studio было скрыто, вы можете снова отобразить его с помощью команды PVS-Studio: Show window в палитре команд (Ctrl + Shift + P).

Запуск анализа
Запустить анализ можно несколькими способами:
1. С помощью кнопки Start analysis:

В этом случае будет запущен анализ всего проекта.
2. Через контекстное меню редактора кода:

В этом случае будет запущен анализ только одного файла. Обратите внимание: отсутствие данного пункта меню означает, что анализ текущего файла не поддерживается.
3. Через контекстное меню проводника:

В этом случае будут проанализированы все поддерживаемые файлы, которые были выделены. Кроме того, если среди выделенных элементов есть папка, то будут проанализированные все файлы, которые находятся в ней и её поддиректориях.
4. Через меню группы вкладок редактора:

В этом случае будут проанализированы все поддерживаемые файлы, открытые в текущей группе вкладок.
5. С помощью команд Run regular analysis и Run intermodular analysis в палитре команд (Ctrl+Shift+P)

Обе команды запускают общий анализ решения. Разница между ними имеет значение только при анализе C и C++ кода. В этом режиме анализатор выполняет более глубокий анализ, но тратит на это больше времени.
Если в открытой в VS Code-директории не найдено подходящей цели для анализа, вы получите соответствующее сообщение.
На Windows:

Для некоторых C и C++ компиляторов на Windows возможно использовать мониторинг компиляции для анализа. О том, как им пользоваться, можно прочитать здесь.
На Linux:

В ином случае вам, возможно, будет предложено настроить параметры, специфичные для анализа проектов, использующих ту или иную сборочную систему. Больше информации об анализе проекта конкретного типа можно найти в разделах документации: Анализ C, C++ (CMake) проектов, Анализ C# (MSBuild) проектов и Анализ Java проектов.
В случае успешного запуска анализа окно PVS-Studio будет выглядеть так:

В правом верхнем углу окна будет отображаться прогресс анализа в процентах. Рядом с ним появится кнопка, которая прерывает анализ. Срабатывания будут появляться в таблице по мере появления.
Анализ C, C++ (CMake) проектов
Для запуска анализа CMake проектов необходимо установить расширение CMake Tools. Перед анализом проекта необходимо собрать его с помощью CMake Tools.
Плагин совместим со следующими генераторами для сборки проектов:
- Ninja;
- Makefile Generators.
При обнаружении неподдерживаемого генератора или его отсутствии появится сообщение, предлагающее задать этот параметр в настройках CMake Tools:

При нажатии на Edit setting откроется страница с настройкой cmake.generator:

В CMake Tools можно указать предпочитаемый путь до папки с файлами сборки с помощью настройки cmake.buildDirectory (по умолчанию это /build внутри открытой папки проекта):

Данный параметр важен для анализа, поскольку в этой директории PVS-Studio будет ожидать файл compile_commands.json.
Для сборки проекта нужно нажать на кнопку Build в левой нижней части окна IDE:

Примечание. О других возможностях расширения CMake Tools можно подробнее прочитать в его документации.
Перед запуском анализа вам будет предложено выбрать его тип: межмодульный анализ (Intermodular analysis) или обычный анализ (Regular analysis). Их отличие заключается в том, что межмодульный анализ выполняется дольше, но даёт лучший результат. Подробнее про этот режим можно прочитать в документации.
При запуске анализа также учитывается содержимое папки .PVS-Studio в директории исходного кода проекта. Если в ней будут найдены пользовательские файлы конфигурации (с расширением .pvsconfig) или suppress-файлы (с суффиксом .suppress.json), то они будут переданы анализатору для дальнейшей обработки.
Примечание. На данный момент при проверке CMake проектов поддерживается работа только с одним suppress-файлом. Если при запуске будет найдено несколько файлов, то в отчёте появится соответствующая запись. В ней будет указано, какой файл используется при анализе.
Анализ C++ и C# (MSBuild) проектов
При первом анализе решения вы получите уведомление о создании файла в /.PVS-Studio/MSBuildAnalyzerConfig.jsonc внутри открытой в IDE директории. В нём можно задать некоторые настройки анализа, аналогичные параметрам консольной версии анализатора.

Варианты действий:
- Edit — открыть только что созданный файл (анализ не будет запущен);
- Continue — запустить анализ с параметрами по умолчанию;
- Cancel — отменить запуск анализа (файл не будет создан).
В этом же файле вы можете указать файлы и параметры, которые будут учитываться при анализе:
- suppress-файлы (с расширением
.suppress.json); - файлы конфигурации (с расширением
.pvsconfig); - платформу и конфигурацию сборки;
- конкретные проекты (
.csprojи.vcxproj) и файлы (.cs,.cppи др.) для анализа; - другие настройки, описание которых можно найти как в самом файле, так и в документации.
Примечание. При запуске анализа конкретных файлов через контекстные меню или меню групп вкладок редактора будут проанализированы только файлы, включённые в выбранное решение.
Если среди анализируемых файлов окажется файл проекта (с расширением .csproj или .vcxproj), то будет выполнен анализ всех поддерживаемых файлов, которые включены в этот проект.
Анализ Java проектов
Чтобы расширение PVS-Studio смогло определить ваш проект в открытой директории, в Visual Studio Code должно быть установлено и активировано расширение Project manager for Java.
Настройка
По умолчанию расширение PVS-Studio ищет ядро анализатора в одной из следующих директорий:
C:\Users\[User]\AppData\Roaming\PVS-Studio-Java(на Windows);~/.config/PVS-Studio-Java(на Linux и macOS).
Если ядро находится в другой папке, следует указать путь к ней в настройках расширения (File > Preferences > Settings > PVS-Studio: Java Projects Analyzer или настройка pvsStudio.javaProjectsAnalyzer.path).
Для запуска ядра анализатора требуется JDK 11-21 версий. По умолчанию используется JDK, путь к которому задан в переменных окружения. Если версия вашего JDK не входит в допустимый диапазон, установите поддерживаемый JDK и укажите путь в настройках Visual Studio Code (File > Preferences > Settings > PVS-Studio: Java For Running Analyzer или настройка pvsStudio.javaProjectsAnalyzer.javaPath).
Перед анализом рекомендуется выполнить команду Java: Reload Projects в палитре команд (Ctrl + Shift + P). Если после этого появится выпадающий список с модулями проекта, убедитесь, что галочкой отмечены все те, которые необходимо проанализировать:

Запуск анализа
При первом анализе проекта вы получите уведомление о создании файла в /.PVS-Studio/ JavaAnalyzerConfig.jsonc внутри открытой в IDE директории. В нём можно задать некоторые настройки анализа, аналогичные параметрам консольной версии анализатора.

Варианты действий:
- Edit — открыть только что созданный файл (анализ не будет запущен);
- Continue — запустить анализ с параметрами по умолчанию;
- Cancel — отменить запуск анализа (файл не будет создан).
В этом файле вы можете указать параметры, которые будут учитываться при анализе, например:
- путь к suppress-файлу (с расширением
. suppress.json); - включить/отключить инкрементальный анализ (по умолчанию отключён);
- включить/отключить специальную диагностику V6078, которая обнаруживает потенциальные проблемы совместимости API между выбранными версиями Java SE (они указываются в качестве отдельных параметров).
Работа с результатами анализа
Преобразование отчёта PVS-Studio в формат JSON
Обратите внимание. Расширение PVS-Studio для Visual Studio Code поддерживает только отчёты в формате JSON. В зависимости от типа проверяемого проекта и способа запуска анализа, PVS-Studio может генерировать отчёт в нескольких форматах. Чтобы отобразить отчёт в расширении, вам потребуется выполнить его преобразование в JSON-формат.
Для преобразования можно воспользоваться утилитами командной строки: PlogConverter.exe для Windows и plog-converter для Linux и macOS. Они позволяют не только конвертировать отчёт PVS-Studio в разные форматы, но и дополнительно обрабатывать его (например, проводить фильтрацию предупреждений). Подробнее можно прочитать здесь.
Пример команды конвертации отчёта PVS-Studio в JSON-формат при помощи PlogConverter.exe (Windows):
PlogConverter.exe path\to\report.plog -t json ^
-n PVS-Studio
Пример команды конвертации отчёта PVS-Studio в JSON-формат при помощи plog-converter (Linux и macOS):
plog-converter path/to/report/file.plog -t json \
-a ALL \
-o PVS-Studio.json
Просмотр преобразованного отчёта
Для просмотра отчёта в Visual Studio Code нажмите на кнопку Open report в окне PVS-Studio и выберите нужный файл. Также можно открыть отчёт, выбрав в палитре команд (Ctrl+Shift+P) PVS-Studio: Load Report:

После этого предупреждения из отчёта отобразятся в таблице:

Для удобной работы с таблицей закрепите её на панели. Для этого кликните правой кнопкой мыши на заголовке панели и выберите пункт PVS-Studio, если на нём не установлена галочка:

Для работы с отчётом, содержащим относительные пути, необходимо воспользоваться настройкой Source Tree Root. Для этого откройте окно настроек, во вкладке Other нажмите кнопку Browse и выберите директорию, относительно которой будут разворачиваться все пути в файле отчёта.

Фильтрация предупреждений
Механизмы фильтрации окна вывода PVS-Studio позволяют быстро найти и отобразить как отдельные диагностические сообщения, так и целые группы. Среди инструментов окна есть переключатели, которые позволяют включить/отключить отображение предупреждений из соответствующих им групп.
Все переключатели можно разбить на три группы:
- фильтры по уровню достоверности предупреждений (Level);
- фильтры сообщений по диагностическим группам (Group);
- фильтры по ключевым словам (Filter). Отфильтровать срабатывания можно по коду сообщения, по тексту сообщения и по файлу, содержащему сообщение анализатора.
Примечание. Детальное описание уровней достоверности предупреждений и групп диагностических правил приведено в разделе документации "Знакомство со статическим анализатором кода PVS-Studio".
Переключить видимость групп фильтраций можно с помощью соответствующих им кнопок:

Все перечисленные механизмы фильтрации предупреждений можно совмещать между собой. Например, фильтровать сообщения по уровню и группам отображаемых предупреждений, исключать сообщения, помеченные как ложные срабатывания и т. п.
Подавление предупреждений
При первом запуске на большом проекте анализатор может выдать много срабатываний. Менее приоритетные можно скрыть при помощи механизма подавления предупреждений.
Для подавления всех предупреждений нужно нажать кнопку Suppress All Messages в правой верхней части окна:

При её активации появится окно с вопросом, какие именно предупреждения вы хотите подавить:
- Suppress All — подавить все предупреждения в таблице (даже скрытые через фильтры и настройки);
- Suppress Filtered — подавить только те предупреждения, что присутствуют в таблице.

При выборе нужного пункта предупреждения будут подавлены в существующий suppress-файл. Если файл отсутствует/не найден, то он будет создан в директории /.PVS-Studio внутри открытого проекта.
Если предложенный выше вариант не подходит, можно воспользоваться точечным подавлением предупреждений. Для этого необходимо выбрать нужные строки в таблице, открыть контекстное меню и выбрать Add message to suppression file:

Навигация и сортировка
Окно вывода результатов PVS-Studio в первую очередь предназначено для упрощения навигации по коду проекта и переходу к участкам кода, содержащим потенциальные ошибки. Двойной щелчок мыши по любому из предупреждений в списке автоматически откроет файл, на который данное сообщение указывает.
Для выделения интересных предупреждений или тех, к которым следует вернуться, можно использовать звёздочку в соответствующей колонке.
Правый клик по заголовку таблицы вызывает контекстное меню, с помощью которого можно настроить отображаемые столбцы:

Другие возможности
Таблица поддерживает множественное выделение с помощью стандартных комбинаций Ctrl и Shift.
Контекстное меню таблицы предупреждений содержит несколько подпунктов:

- Mark as Favorite — отмечает выбранные сообщения как избранные;
- Mark as False Alarm — помечает выбранные сообщения как ложные срабатывания и добавляет специальный комментарий в исходный код;
- Copy message — копирует в буфер обмена номер и сообщение диагностики, файл, на котором выдано предупреждение;
- Exclude diagnostic — исключает показ всех предупреждений с тем же кодом, что и у выделенного;
- Exclude paths — позволяет исключить путь или его часть к выделенному файлу. Все предупреждения на файлах, содержащих выбранный путь, не будут показаны.

Кнопки в правой части панели предназначены для запуска анализа, подавления предупреждений, сохранения отчёта, открытия нового отчёта, открытия настроек расширения. При наличии изменений в отчёте кнопка станет красной, как на скриншоте:

Конфигурация плагина
Для открытия окна настроек нажмите на крайнюю правую кнопку окна PVS-Studio или откройте панель команд (Ctrl+Shift+P) и введите PVS-Studio: Show Settings.
Кнопка Export settings сохраняет настройки в формате JSON. Для загрузки сохранённых настроек воспользуйтесь кнопкой Import settings.

Analysis
В группе настроек Analysis можно настроить:
- тайм-аут анализа — время, по истечению которого анализ будет прерван;
- количество потоков, используемых при анализе.
Можно включить/выключить удаление временных файлов и использование нового парсера для C++.

Excluded paths
Во вкладке Excluded paths в поле New excluded path wildcard можно ввести пути или маски путей. Сообщения, выданные на файлы, которые удовлетворяют условиям маски, не будут отображаться в таблице срабатываний.

Diagnostics
Вкладка Diagnostics позволяет отметить, какие предупреждения должны отображаться в таблице срабатываний.
Все срабатывания разбиты на группы. Для поиска определённого диагностического правила можно воспользоваться полем Code or message.
Кнопки Check all/Uncheck all предназначены для включения/выключения отображения всех диагностик из определённой группы.
При отключении всех диагностик из группы соответствующий ей переключатель перестаёт отображаться в окне плагина.

False alarms
Во вкладке False alarms можно настроить:
- отображение ложных срабатываний;
- автоматическое сохранение исходных файлов при отметке предупреждения как ложного.

Columns
Данная вкладка настроек позволяет выбрать, какие столбцы будут отображаться в таблице срабатываний.

Coding Standards
Данная вкладка настроек позволяет выбрать необходимые версии используемых стандартов кодирования.

Monitoring (C and C++)
Во вкладке Monitoring (C and С++) в поле Wrap compilers можно ввести имена файлов компиляторов, которые необходимо отслеживать, разделив их запятой.

License
Во вкладке License можно ввести имя пользователя и лицензионный ключ из своей лицензии. Если вы ввели валидные данные, то отобразится сообщение с данными лицензии.
Other
Для работы с отчётом PVS-Studio, который содержит пути до файлов в относительной форме, их нужно заменить на абсолютные. Настройка Source Tree Root позволяет задать директорию, относительно которой раскрываются все пути в файле отчёта. Детальное описание использования относительных путей в файлах отчётов PVS-Studio можно найти здесь.
При включении настройки Security Related Issues предупреждения, относящиеся к потенциальным проблемам безопасности и классифицируемые согласно ГОСТ Р 71207-2024, будут выделены дополнительной маркировкой в столбце SAST в результатах анализа.

Работа с версиями плагина PVS-Studio
У плагина для VS Code есть жёсткая привязка к установленной версии анализатора. Проблема в том, что плагины обновляются автоматически по умолчанию. Это может приводит к рассинхронизации версий плагина и анализатора. Чтобы не возникало проблем в работе плагина, можно отключить его автообновление либо обновить версию анализатора PVS-Studio.
Чтобы отключить автообновление плагина в VS Code, нужно перейти в Extensions, найти плагин PVS-Studio, открыть его и убрать галочку с Auto Update.

VS Code позволяет установить необходимую версию плагина. Для этого нужно нажать на стрелку рядом с кнопкой Uninstall и в появившемся меню выбрать Install Specific Version.

После этого можно выбрать нужную версию, которая установится автоматически.
