>
>
Просмотр отчетов в формате Sarif в Visu…


Просмотр отчетов в формате 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 и работать с ним.

Проанализировать код и получить отчёт анализатора можно одним из следующих способов:

Установка плагина 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:

Позиции могут указывать на строчки в одном или нескольких файлах. Это сделано для того, чтобы легче понять суть предупреждения. При клике на текст с описанием позиции будет открыт указанный файл на строке, связанной с позицией.