В наше время люди все чаще начинают оптимизировать работу по поиску ошибок в коде с помощью статического анализатора.
Результаты работы анализатора можно просмотреть с помощью различных продуктов.
Однако сегодня мы поговорим о просмотре отчета анализатора в самой стильной среди многофункциональных и самой многофункциональной среди стильных IDE — VSCode. Формат SARIF и специальный плагин для него позволят реализовать нашу задачу.
Обо всем этом позже – поехали.
Эту статью я написал по просьбе нашего читателя в комментариях к предыдущей.
статья по теме, связанной с SARIF. Можно сказать, что это уже небольшая серия статей о SARIF :) Поэтому, если вам интересно услышать о том, где и как еще можно использовать этот формат (или о чем угодно), то оставляйте свои пожелания в комментариях.
Что такое ШАРИФ?
ШАРИФ (Формат обмена результатами статического анализа) — это формат обмена результатами статического анализа на основе JSON для выходных данных инструментов статического анализа.
Он предназначен для взаимодействия с другими инструментами: IDE, сложными инструментами проверки и анализа кода (например, SonarQube), системами непрерывной интеграции и т. д. В целом до появления единого формата работа статического анализатора выглядела примерно так:
То есть понятно, что у каждого продукта есть свой стандарт, к которому он должен адаптироваться.
Согласитесь, что это не очень удобно.
Зайдя в SARIF, мы получаем другую картину:
Так что теоретически в идеальном мире достаточно получить отчет в таком формате.
Далее его можно открыть\использовать в любой программе\системе, работающей с результатами статического анализа.
Получение отчета в формате SARIF
SARIF — это единый формат, который можно получить с помощью различных статических анализаторов и инструментов.
В данном случае мы будем использовать анализатор PVS-Studio и разрабатываемую нами утилиту преобразования формата отчетов PlogConverter.
Проверка проекта
Чтобы получить отчет в формате SARIF, я подготовил для тестирования простой и в то же время интересный пример исходного кода на C#:Кстати, одна из ошибок в этом примере основана на настоящая ошибка e из проекта ILSpy. Теперь возьмем статический анализатор PVS-Студия и с помощью консольной утилиты " PVS-Studio_Cmd.exe "Анализ проводим, выполнив следующую команду: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; } } }
"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#, то нам достаточно скачать соответствующий плагин.
Вы можете сделать это следующим образом:
- открыл VSCode;
- слева мы нашли кнопку «Расширения»;
- в строке поиска написали то, что нам нужно (в нашем примере это C#);
- Из списка отображаемых плагинов выбираем нужный нам.
Выбор плагина мы основываем на его рейтинге, количестве загрузок и описании;
- для скачивания нажмите на кнопку установки, которая находится либо в окне описания, либо в окне списка плагинов справа от названия;
- Иногда может потребоваться дополнительная настройка.
Здесь все индивидуально для каждого плагина, поэтому читайте описание.
Если мы скачали плагин и он не понравился, мы можем его либо отключить, либо удалить вообще.
Это также можно сделать в пару кликов:
- открыть Расширения;
- в строку поиска введите название плагина, который хотите удалить;
- нажимаем на него и в появившемся окне с описанием вверху находим две кнопки «Отключить» и «Удалить»;
- Нажимаем на кнопку, соответствующую нашим целям.
Плагин для работы с SARIF для VSCode
Установка плагина
Процесс установки плагина для работы с отчетами формата SARIF ничем не отличается от установки любого другого плагина.Если вы не знаете, как это сделать, я описал это в пункте выше.
В частности, для VSCode я рекомендую и буду использовать плагин под названием " САРИФ Просмотрщик ".
Его установка не требует каких-либо дополнительных настроек.
Загрузка отчета в плагин
Работа с плагином максимально проста.Изначально отчет необходимо скачать, и сделать это можно несколькими способами.
Сначала вы находите свой файл SARIF, щелкаете правой кнопкой мыши и выбираете «открыть в VSCode».
Во-вторых, вы открываете VSCode и через него открываете файл SARIF.
Третий вариант. Вы открываете VSCode. В нем найдите панель «Показать все команды» (по умолчанию это комбинация Ctrl+Shift+P).
В появившемся окне введите sarif и выберите «SARIF: Показать панель».
В открывшемся окне нажмите «Открыть журнал SARIF» и выберите файл SARIF. Все.
На этом самое сложное закончилось.
Отчет загружен, можно приступать к просмотру предупреждений.
Возможности плагина
После того, как вы скачали отчет, вы увидите такую картинку:Но давайте по порядку.
Меню LOCATIONS - список предупреждений, сгруппированных по файлам:
При нажатии на сообщение вы попадаете в проблемную область кода.
Обратите внимание, что все проблемные места уже выделены волнистой линией.
При наведении курсора на эту строку появится описание проблемы.
Нам также сообщают, что мы можем перемещаться между оповещениями с помощью сочетания клавиш (Alt + F8).
Идем дальше – меню ПРАВИЛА.
В нем мы можем посмотреть все те же сообщения, но сгруппированные по диагностическим правилам:
Нажатие на предупреждение все равно запускает переход. На вкладке ЖУРНАЛЫ указано, какие отчеты у вас открыты в данный момент.
Поэтому мы быстро просмотрели все вкладки.
Дополнительно хотелось бы обратить ваше внимание на то, что ниже каждого правила есть описание:
Нажав на диагностический код (содержимое «Идентификатор правила»), вы перейдете к документации по этому предупреждению.
Заключение
Как видите, формат SARIF позволил нам просто и быстро воспользоваться вторым готовым инструментом и получить результат. Согласитесь, это довольно удобно.Что касается плагина, то я думаю, что этот плагин можно использовать для просмотра предупреждений статического анализа.
Возможно, в будущем мы напишем собственный плагин с блэкджеком и наворотами (как недавно сделали с CLion ).
Однако на данный момент, если вам нужно/желаете просматривать отчеты статического анализатора в VSCode, то обратите внимание на этот продукт. Спасибо.
Если вы хотите поделиться этой статьей с англоязычной аудиторией, воспользуйтесь ссылкой для перевода: Николай Миронов.
VSCode: как просмотреть отчеты статических анализаторов, поддерживающих SARIF .
Теги: #microsoft #Visual Studio #pvs-studio #plugin #extensions #extension #vscode #SARIF
-
Задача О Четырех Очках
19 Oct, 24 -
Навигация: Плохой Совет
19 Oct, 24 -
Очередной Обзор Gsm Розетки Senseit Gs2 M
19 Oct, 24 -
Сказки Про Nft Для Самых Маленьких
19 Oct, 24 -
Выставка Гаджетов
19 Oct, 24