Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08
С помощью специализированного расширения 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. Для его работы в системе также должен быть установлен анализатор. Скачать его можно здесь.
При установке анализатора на Windows можно выбрать пункт Integration with Visual Studio Code в меню установщика, и тогда расширение PVS-Studio добавится в Visual Studio Code автоматически при установке анализатора.

Файл расширения PVS-Studio в формате .vsix можно получить со страницы PVS-Studio в Visual Studio Marketplace.
Файл расширения pvs-studio-vscode-*.vsix распаковывается при установке анализатора (путь по умолчанию: PROGRAMFILES(x86)%\PVS-Studio для Windows, /usr/lib/pvs-studio/plugins для Linux и macOS).
Для установки расширения из такого файла необходимо во вкладке 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 будет выглядеть так:

В правом верхнем углу окна будет отображаться прогресс анализа в процентах. Рядом с ним появится кнопка, которая прерывает анализ. Срабатывания будут появляться в таблице по мере появления.
Для запуска анализа CMake проектов необходимо установить расширение CMake Tools. Перед анализом проекта необходимо собрать его с помощью CMake Tools.
Плагин совместим со следующими генераторами для сборки проектов:
При обнаружении неподдерживаемого генератора или его отсутствии появится сообщение, предлагающее задать этот параметр в настройках 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-файлом. Если при запуске будет найдено несколько файлов, то в отчёте появится соответствующая запись. В ней будет указано, какой файл используется при анализе.
При первом анализе решения вы получите уведомление о создании файла в /.PVS-Studio/MSBuildAnalyzerConfig.jsonc внутри открытой в IDE директории. В нём можно задать некоторые настройки анализа, аналогичные параметрам консольной версии анализатора.

Варианты действий:
В этом же файле вы можете указать файлы и параметры, которые будут учитываться при анализе:
.suppress.json);.pvsconfig); .csproj и .vcxproj) и файлы (.cs, .cpp и др.) для анализа; Примечание. При запуске анализа конкретных файлов через контекстные меню или меню групп вкладок редактора будут проанализированы только файлы, включённые в выбранное решение.
Если среди анализируемых файлов окажется файл проекта (с расширением .csproj или .vcxproj), то будет выполнен анализ всех поддерживаемых файлов, которые включены в этот проект.
Чтобы расширение 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 директории. В нём можно задать некоторые настройки анализа, аналогичные параметрам консольной версии анализатора.

Варианты действий:
В этом файле вы можете указать параметры, которые будут учитываться при анализе, например:
. suppress.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 позволяют быстро найти и отобразить как отдельные диагностические сообщения, так и целые группы. Среди инструментов окна есть переключатели, которые позволяют включить/отключить отображение предупреждений из соответствующих им групп.
Все переключатели можно разбить на три группы:
Примечание. Детальное описание уровней достоверности предупреждений и групп диагностических правил приведено в разделе документации "Знакомство со статическим анализатором кода PVS-Studio".
Переключить видимость групп фильтраций можно с помощью соответствующих им кнопок:

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

При её активации появится окно с вопросом, какие именно предупреждения вы хотите подавить:

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

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

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


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

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

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

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

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

Во вкладке False alarms можно настроить:

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

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

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

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

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

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

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