>
>
Обзор плагина PVS-Studio для Visual Stu…

Андрей Москалёв
Статей: 11

Обзор плагина PVS-Studio для Visual Studio Code

Благодаря новому плагину PVS-Studio преимущества статического анализа теперь доступны и при работе с редактором Visual Studio Code. В этой статье мы разберём использование плагина от этапа установки до работы с результатами анализа. Присоединяйтесь!

PVS-Studio – это статический анализатор кода, предназначенный для проверки C, С++, С# и Java проектов. В декабре 2022 года командой PVS-Studio было выпущено два плагина: для Qt Creator и для Visual Studio Code. На данный момент оба плагина поддерживают основной функционал, необходимый для работы с результатами анализа. Анализировать проекты непосредственно из интерфейса плагинов пока нельзя, но мы планируем добавить эту возможность в будущих релизах. Сейчас же анализ можно выполнить в плагинах для Rider, Visual Studio или с помощью командной строки.

Но вернемся к главной теме этой статьи. Предлагаю познакомимся с плагином PVS-Studio для Visual Studio Code и узнать, как вы можете использовать его в своей работе.

Устанавливаем анализатор PVS-Studio и плагин для VS Code

Для начала установим анализатор PVS-Studio, чтобы позже проанализировать проект. Установочный файл анализатора вы можете скачать с официального сайта.

Установка анализатора на Windows

В процессе установки анализатора у вас не должно возникнуть трудностей. Тем не менее вы всегда можете воспользоваться инструкцией по установке PVS-Studio на Windows.

Примечание. На этапе установки 'Select Components' можно выбрать пункт 'Integration with Visual Studio Code'. В результате вместе с анализатором будет установлен и плагин к VS Code.

Установка анализатора на Linux и macOS

Процессы установки анализатора на операционных системах Linux и macOS детально описаны в следующих разделах документации:

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

Если плагин не был установлен вместе с анализатором, можно сделать это вручную. Чтобы установить плагин PVS-Studio, откройте Visual Studio Code и перейдите на вкладку 'Extensions', затем введите в поле поиска 'PVS-Studio' и кликните по кнопке 'Install':

Запускаем анализ

Давайте опробуем плагин и анализатор, проверив какой-нибудь проект. В этой статье я буду демонстрировать работу анализатора на примере Open Source проекта.

Запуск анализа непосредственно из VS Code пока не поддерживается, однако эту возможность планируется добавить в будущих релизах. Сейчас же предлагаю воспользоваться командной строкой.

Для запуска анализа C#-приложения на операционной системе Linux я использовал команду следующего вида:

pvs-studio-dotnet -t Solution.sln -o PVS-Studio_Result.json -r

В этой команде применяются следующие параметры:

  • -t [project/sln] — обязательный параметр, путь до файла проекта или решения;
  • -o [outputPath] — путь, по которому будет сгенерирован отчет с результатами анализа. Поддерживаются два формата отчета: 'plog' и 'json'. Формат отчета определяется по заданному расширению файла. В зависимости от версии анализатора и используемой ОС формат по умолчанию может отличаться. Важно отметить, что на данный момент плагин поддерживает работу только с отчетами формата json, поэтому лучше задавать этот параметр явно;
  • -r — включает режим подробного логирования в терминале для отслеживания хода выполнения анализа.

Примечание. Запуск анализа из командной строки может отличаться в зависимости от операционной системы и языка программирования анализируемого проекта. Вы можете обратиться к документации PVS-Studio для получения инструкции по запуску анализа конкретно для вашего случая.

Работа с результатами анализа

Вернемся в VS Code и перейдем во вкладку 'PVS-Studio'. Здесь кликаем по кнопке 'Open report':

В появившемся диалоговом окне выбираем файл с отчетом. Напомню, что на данный момент плагин работает только с json-отчетами. Если вы работаете на Windows, ваш отчет мог сгенерироваться в формате 'plog'. В этом случае следует предварительно сконвертировать его в 'json' с помощью прилагаемой к анализатору утилите — 'PlogConverter'. Больше информации о работе с утилитой вы можете получить в разделе документации о просмотре и конвертации результатов анализа.

Интерфейс плагина можно условно разделить на пять областей:

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

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

Обратите внимание на область интерфейса под номером 2:

Кнопки этой области позволяют включить/отключить предупреждения с определенным уровнем. Уровень отражает "уверенность" анализатора в том, что предупреждение указывает на ошибку.

Каждой кнопке соответствует число – количество предупреждений данного уровня.

А сейчас почему бы нам не найти какую-нибудь ошибку в проекте, используя отчет анализатора?

Анализатор сообщает об использовании анонимной функции для отписки от события. Чтобы перейти к коду, дважды кликнем по строке предупреждения:

Действительно, здесь создается анонимная функция, которая используется для отписки от события CollectionChanged. Разработчик не учёл, что все анонимные функции являются уникальными объектами. Таким образом, данная анонимная функция никак не связана ни с одним обработчиком события, а значит и отписка от события выполнена не будет.

Планы развития плагина для VS Code

Уже сейчас плагин предоставляет основной функционал, необходимый для работы с отчетами анализатора PVS-Studio. Скоро он станет ещё удобнее благодаря возможности запускать анализ непосредственно из плагина. Эта возможность будет реализовываться поэтапно: сначала будет поддержан запуск анализа C и C++ проектов, а затем проектов на C#.

Заключение

В этой статье мы познакомились с принципом работы анализатора кода вместе с новым плагином PVS-Studio для Visual Studio Code.

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

На этом статья завершается, надеюсь она показалась интересной :)

Чистого кода и успешных проектов! До встречи в следующих статьях!