Как Просмотреть Отчеты Статических Анализаторов, Поддерживающих Sarif, В Vscode

В наше время люди все чаще начинают оптимизировать работу по поиску ошибок в коде с помощью статического анализатора.

Результаты работы анализатора можно просмотреть с помощью различных продуктов.

Однако сегодня мы поговорим о просмотре отчета анализатора в самой стильной среди многофункциональных и самой многофункциональной среди стильных IDE — VSCode. Формат SARIF и специальный плагин для него позволят реализовать нашу задачу.

Обо всем этом позже – поехали.



Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Эту статью я написал по просьбе нашего читателя в комментариях к предыдущей.

статья по теме, связанной с SARIF. Можно сказать, что это уже небольшая серия статей о SARIF :) Поэтому, если вам интересно услышать о том, где и как еще можно использовать этот формат (или о чем угодно), то оставляйте свои пожелания в комментариях.



Что такое ШАРИФ?

ШАРИФ (Формат обмена результатами статического анализа) — это формат обмена результатами статического анализа на основе JSON для выходных данных инструментов статического анализа.

Он предназначен для взаимодействия с другими инструментами: IDE, сложными инструментами проверки и анализа кода (например, SonarQube), системами непрерывной интеграции и т. д. В целом до появления единого формата работа статического анализатора выглядела примерно так:

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

То есть понятно, что у каждого продукта есть свой стандарт, к которому он должен адаптироваться.

Согласитесь, что это не очень удобно.

Зайдя в SARIF, мы получаем другую картину:

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Так что теоретически в идеальном мире достаточно получить отчет в таком формате.

Далее его можно открыть\использовать в любой программе\системе, работающей с результатами статического анализа.



Получение отчета в формате SARIF

SARIF — это единый формат, который можно получить с помощью различных статических анализаторов и инструментов.

В данном случае мы будем использовать анализатор PVS-Studio и разрабатываемую нами утилиту преобразования формата отчетов PlogConverter.

Проверка проекта

Чтобы получить отчет в формате SARIF, я подготовил для тестирования простой и в то же время интересный пример исходного кода на C#:
  
  
   

using System; using System.Collections.Generic; using System.Linq; namespace SarifTest { class Program { static void Main(string[] args) { var start = Convert.ToInt64(args[0]); var end = Convert.ToInt64(args[1]); ToString(start, end); } static string ToString(long start, long end) { if (end == long.MinValue) { if (start == long.MinValue) return string.Format("[long.MinValue.long.MaxValue]", end); else return string.Format("[{0}.

long.MaxValue]", start); } else if (start == long.MinValue) { return string.Format("[long.MinValue.{0})", end); } else { return string.Format("[{0}.

{1})", start, end); } } static int Formula42(int? coefficientA, int? coefficientB) { var data = new List<int>(); if (coefficientA != null) data.Add(Formula42(coefficientA.Value)); else if (coefficientB != null) data.Add(Formula42(coefficientA.Value)); return data.SingleOrDefault(); } static private int Formula42(int coefficient) { return coefficient; } static int CrazyCalculations() { var value = 10; value = value++; return value; } } }

Кстати, одна из ошибок в этом примере основана на настоящая ошибка e из проекта ILSpy. Теперь возьмем статический анализатор PVS-Студия и с помощью консольной утилиты " PVS-Studio_Cmd.exe "Анализ проводим, выполнив следующую команду:

"C:\Program Files (x86)\PVS-Studio\PVS-Studio_Cmd.exe" \ -t "D:\Use_SARIF_Example\BestProjectCpp.sln" \ -o "D:\Use_SARIF_Example\results.plog"

Давайте рассмотрим линию запуска немного подробнее.

Флаг «-t» обязателен.

Он позволяет указать объект для проверки (файл sln или csproj/vcxproj).

Флаг «-o» указывает путь к файлу, в который будут записаны результаты анализа.

Забыл сказать, что для работы анализатора необходима лицензия.

Если у вас его нет, вы можете получить пробную версию, нажав здесь.

здесь .

Теперь у нас есть выходной отчет в формате анализатора PVS-Studio. Это выходной файл с расширением «.

plog».

Нам нужно преобразовать его в формат SARIF. Для этого воспользуемся утилитой PlogConverter.

Конвертировать из Плога в SARIF

ПлогКонвертер — утилита с открытым исходным кодом, предназначенная для конвертации отчетов анализатора PVS-Studio из одного формата в другой.

Более подробно оно описано в документация .

Конвертируйте отчет анализатора в формат SARIF:

"C:\Program Files (x86)\PVS-Studio\PlogConverter.exe" \ "D:\Use_SARIF_Example\results.plog" \ -o "D:\Use_SARIF_Example" -t sarif -n results

Всё, отчет получен.

Вы можете приступить к настройке VSCode.

Основы установки плагинов в VSCode

VSCode — легкий, бесплатный, кроссплатформенный редактор кода, предоставляющий широкие возможности для настройки.

Редактор — это своего рода «конструктор», который мы собираем с помощью плагинов.

То есть, если нам нужно написать программу на C#, то нам достаточно скачать соответствующий плагин.

Вы можете сделать это следующим образом:

  1. открыл VSCode;
  2. слева мы нашли кнопку «Расширения»;
  3. в строке поиска написали то, что нам нужно (в нашем примере это C#);
  4. Из списка отображаемых плагинов выбираем нужный нам.

    Выбор плагина мы основываем на его рейтинге, количестве загрузок и описании;

  5. для скачивания нажмите на кнопку установки, которая находится либо в окне описания, либо в окне списка плагинов справа от названия;
  6. Иногда может потребоваться дополнительная настройка.

    Здесь все индивидуально для каждого плагина, поэтому читайте описание.

На что это похоже:

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Если мы скачали плагин и он не понравился, мы можем его либо отключить, либо удалить вообще.

Это также можно сделать в пару кликов:

  1. открыть Расширения;
  2. в строку поиска введите название плагина, который хотите удалить;
  3. нажимаем на него и в появившемся окне с описанием вверху находим две кнопки «Отключить» и «Удалить»;
  4. Нажимаем на кнопку, соответствующую нашим целям.

Этот выглядит так:

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode



Плагин для работы с SARIF для VSCode



Установка плагина

Процесс установки плагина для работы с отчетами формата SARIF ничем не отличается от установки любого другого плагина.

Если вы не знаете, как это сделать, я описал это в пункте выше.

В частности, для VSCode я рекомендую и буду использовать плагин под названием " САРИФ Просмотрщик ".

Его установка не требует каких-либо дополнительных настроек.



Загрузка отчета в плагин

Работа с плагином максимально проста.

Изначально отчет необходимо скачать, и сделать это можно несколькими способами.

Сначала вы находите свой файл SARIF, щелкаете правой кнопкой мыши и выбираете «открыть в VSCode».



Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Во-вторых, вы открываете VSCode и через него открываете файл SARIF.

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Третий вариант. Вы открываете VSCode. В нем найдите панель «Показать все команды» (по умолчанию это комбинация Ctrl+Shift+P).

В появившемся окне введите sarif и выберите «SARIF: Показать панель».



Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

В открывшемся окне нажмите «Открыть журнал SARIF» и выберите файл SARIF. Все.

На этом самое сложное закончилось.

Отчет загружен, можно приступать к просмотру предупреждений.



Возможности плагина

После того, как вы скачали отчет, вы увидите такую картинку:

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Но давайте по порядку.

Меню LOCATIONS - список предупреждений, сгруппированных по файлам:

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

При нажатии на сообщение вы попадаете в проблемную область кода.



Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Обратите внимание, что все проблемные места уже выделены волнистой линией.

При наведении курсора на эту строку появится описание проблемы.



Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Нам также сообщают, что мы можем перемещаться между оповещениями с помощью сочетания клавиш (Alt + F8).



Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Идем дальше – меню ПРАВИЛА.

В нем мы можем посмотреть все те же сообщения, но сгруппированные по диагностическим правилам:

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Нажатие на предупреждение все равно запускает переход. На вкладке ЖУРНАЛЫ указано, какие отчеты у вас открыты в данный момент.

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Поэтому мы быстро просмотрели все вкладки.

Дополнительно хотелось бы обратить ваше внимание на то, что ниже каждого правила есть описание:

Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode

Нажав на диагностический код (содержимое «Идентификатор правила»), вы перейдете к документации по этому предупреждению.



Как просмотреть отчеты статических анализаторов, поддерживающих SARIF, в VSCode



Заключение

Как видите, формат SARIF позволил нам просто и быстро воспользоваться вторым готовым инструментом и получить результат. Согласитесь, это довольно удобно.

Что касается плагина, то я думаю, что этот плагин можно использовать для просмотра предупреждений статического анализа.

Возможно, в будущем мы напишем собственный плагин с блэкджеком и наворотами (как недавно сделали с CLion ).

Однако на данный момент, если вам нужно/желаете просматривать отчеты статического анализатора в VSCode, то обратите внимание на этот продукт. Спасибо.

Если вы хотите поделиться этой статьей с англоязычной аудиторией, воспользуйтесь ссылкой для перевода: Николай Миронов.

VSCode: как просмотреть отчеты статических анализаторов, поддерживающих SARIF .

Теги: #microsoft #Visual Studio #pvs-studio #plugin #extensions #extension #vscode #SARIF

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.