Просмотр отчетов в формате Sarif в Visual Studio Code
Внимание. Более предпочтительный вариант работы в Visual Studio Code - это использование расширения PVS-Studio для Visual Studio Code вместо использования плагина Sarif для Visual Studio Code описанного в данной документации.
Смотреть отчёты PVS-Studio в Visual Studio Code можно с помощью плагина Sarif Viewer. Ниже описано, как установить плагин, загрузить в него отчёт PVS-Studio и работать с ним.
Проанализировать код и получить отчёт анализатора можно одним из следующих способов:
- консольные утилиты PVS-Studio_Cmd.exe (C++, C# Windows), pvs-studio-dotnet (C# Linux/macOS), CompilerCommandsAnalyzer.exe (C++ Windows) / pvs-studio-analyzer (C++ Linux/macOS);
- JSON Compilation Database для C++ проектов;
- плагины PVS-Studio для IDE: Visual Studio, JetBrains Rider, CLion, IntelliJ IDEA, Qt Creator;
- расширение для VS Code;
- плагины для сборочных систем Maven и Gradle;
- система мониторинга компиляции;
- консольная утилита pvs-studio.jar.
Установка плагина Sarif Viewer
Чтобы установить плагин 'Sarif Viewer', откройте Visual Studio Code, перейдите на вкладку 'Extensions', введите в поле поиска "Sarif Viewer" и кликните по кнопке 'Install':
Обратите внимание: для корректной работы требуется плагин версии 3.1.2 или выше. Если версию плагина 3.1.2 или выше в VS Code найти не удаётся, то вы можете скачать нужную версию из GitHub репозитория плагина. В исходниках каждой версии имеется файл с расширением .vsix.
Для установки плагина из .vsix-файла на вкладке 'Extentions' в правом верхнем углу необходимо нажать на три точки и в появившемся меню выбрать пункт 'Install from VSIX...':
В открывшемся окне выберите .vsix-файл плагина 'Sarif Viewer'. После установки плагина перезапустите Visual Studio Code.
Работа с результатами анализа
Преобразование отчёта PVS-Studio в формат SARIF
SARIF — это универсальный формат предоставления информации от статических анализаторов. Формат SARIF используется не только в PVS-Studio, но и в других инструментах. Например, в GitHub в Code scanning alerts, Coverity и CodeSonar.
Для преобразования можно воспользоваться утилитами командной строки PlogConverter.exe для Windows и plog-converter для Linux/macOS. Эти утилиты позволяют не только конвертировать отчёт PVS-Studio в разные форматы, но и дополнительно обрабатывать его. Например, проводить фильтрацию сообщений.
Формат отчёта, который следует использовать в плагине Sarif Viewer, немного отличается от универсального SARIF-формата. Из-за этой особенности при конвертации отчёта для VS Code необходимо использовать специальный SARIF-формат:
- 'SarifVSCode' в PlogConverter.exe;
- 'sarif-vscode' в plog-converter.
Пример команды конвертации отчёта PVS-Studio в SARIF-формат для Visual Studio Code при помощи PlogConverter.exe (Windows):
PlogConverter.exe path\to\report.plog -t SarifVSCode ^
-o output\directory ^
-n converted_report_name
Пример команды конвертации отчёта PVS-Studio в SARIF-формат для Visual Studio Code при помощи plog-converter (Linux/macOS):
plog-converter path/to/report/file.json -t sarif-vscode \
-o output/directory \
-n converted_report_name
Примечание. Эти утилиты могут преобразовать отчёт PVS-Studio и в универсальный SARIF-формат. Этот формат возможно использовать в Sarif Viewer, но при этом навигация по дополнительным позициям предупреждений не будет работать.
Если пути в отчёте начинаются с метки '|?|', их нужно преобразовать в абсолютные. Без этого навигация по предупреждениям не будет работать. Используйте флаг 'r', чтобы заменить метку на часть пути.
Пример команды конвертации в SARIF-формат с преобразованием путей в абсолютные:
PlogConverter.exe path\to\report.plog -t SarifVSCode ^
-o output\directory ^
-n converted_report_name ^
-r path\to\project\folder
Просмотр преобразованного отчёта PVS-Studio в VS Code
Для открытия отчёта в SARIF-формате используйте пункты меню 'File > Open File':
Также отчёт можно открыть из проводника. Для этого используйте команду 'Open with Code' из контекстного меню:
После загрузки отчёта откроется отдельная вкладка:
В окне плагина имеется несколько вкладок для группировки предупреждений:
- Locations — группировка предупреждений по файлам;
- Rules — группировка предупреждений по правилам;
- Logs — группировка предупреждений по файлам SARIF-отчётов.
Справа сверху во вкладке, добавленной плагином, имеется несколько элементов:
- кнопка 'Collapse All' / 'Expand All'. Позволяет свернуть/развернуть все узлы предупреждений;
- кнопка 'Open Log'. Позволяет открыть новый/ещё один SARIF-отчёт;
- поле текстового фильтра с кнопкой.
Текстовый фильтр позволяет фильтровать предупреждения из отчёта по любому тексту, который отображается в таблице со списком предупреждений. Например, по тексту сообщения предупреждения, а также по полному или частичному имени файла:
При нажатии на иконку фильтра открывается меню с дополнительными фильтрами предупреждений и чекбоксы для скрытия/отображения столбцов 'BaseLine', 'Suppression' и 'Rule':
Подробная информация о выбранном предупреждении отображается во вкладке 'INFO':
При клике на предупреждение открывается соответствующий файл на строке, на которую оно было выдано. Строка подчёркивается волнистой линией одного из трёх цветов. Каждый цвет обозначает уровень достоверности предупреждения и соответствует одному из уровней в дополнительных фильтрах:
- Красный: High — Error;
- Желтый: Medium — Warning;
- Синий: Low — Note.
С предупреждением анализатора могут быть связаны несколько позиций. При этом во вкладке 'INFO' будет отображено несколько строк напротив метки Locations:
Позиции могут указывать на строчки в одном или нескольких файлах. Это сделано для того, чтобы легче понять суть предупреждения. При клике на текст с описанием позиции будет открыт указанный файл на строке, связанной с позицией.