Работа PVS-Studio в JetBrains Rider

Анализатор PVS-Studio можно использовать при работе в среде разработки JetBrains Rider. Плагин PVS-Studio для этой IDE предоставляет удобный графический интерфейс для запуска анализа проектов и отдельных файлов, а также для работы с предупреждениями анализатора.

Плагин PVS-Studio для Rider можно установить из официального репозитория плагинов JetBrains или из репозитория на нашем сайте. Ещё один способ установки - через установщик PVS-Studio для Windows, доступный на странице загрузки.

Установка плагина из официального репозитория JetBrains

Для установки плагина PVS-Studio из официального репозитория JetBrains нужно открыть окно настроек с помощью команды 'File -> Settings -> Plugins', выбрать в окне вкладку Marketplace, и ввести в строке поиска 'PVS-Studio'. В результатах поиска появится плагин PVS-Studio for Rider:

https://import.viva64.com/docx/manual/Rider_ru/image1.png

Далее нужно нажать кнопку Install напротив найденного плагина PVS-Studio. После того, как установка плагина будет завершена, нужно нажать кнопку Restart IDE.

https://import.viva64.com/docx/manual/Rider_ru/image3.png

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

Установка плагина из репозитория PVS-Studio

Помимо официального репозитория JetBrains, плагин PVS-Studio для Rider также доступен из собственного репозитория PVS-Studio. Для установки плагина из репозитория PVS-Studio сначала нужно добавить репозиторий в Rider. Для этого нужно открыть окно установки плагинов с помощью команды меню File -> Settings -> Plugins.

https://import.viva64.com/docx/manual/Rider_ru/image5.png

Далее, нажать на шестеренку в правом верхнем углу и в выпадающем списке выбрать Manage Plugin Repositories.

https://import.viva64.com/docx/manual/Rider_ru/image7.png

В открывшемся окне добавить путь http://files.viva64.com/java/pvsstudio-rider-plugins/updatePlugins.xml и нажать Ок.

https://import.viva64.com/docx/manual/Rider_ru/image9.png

Последний шаг установки аналогичен установке плагина из официального репозитория - нужно открыть вкладку Marketplace, где в поиск ввести "PVS-Studio". После применения данного фильтра выбрать плагин 'PVS-Studio for Rider', нажать Install и перезапустить среду разработки.

Установка C# анализатора PVS-Studio

Для работы анализатора PVS-Studio в среде Rider, помимо установки IDE плагина, также требуется установить ядро C# анализатора и его зависимости.

Если вы устанавливали Rider плагин через Windows установщик PVS-Studio, то все необходимые для работы компоненты уже должны быть установлены в системе и можно пропустить этот шаг.

Если же плагин для Rider ставился отдельно (добавлением репозитория или из официального репозитория JetBrains), необходимо перед началом работы скачать и установить C# анализатор для необходимой платформы отсюда.

Ввод лицензии

Для ввода лицензии анализатора необходимо открыть любой проект в Rider, после чего открыть окно настроек плагина с помощью команды меню 'Tools -> PVS-Studio -> Settings':

https://import.viva64.com/docx/manual/Rider_ru/image10.png

В окне настроек плагина перейти на вкладку Registration.

https://import.viva64.com/docx/manual/Rider_ru/image11.png

В поле User Name нужно ввести имя пользователя, в поле Serial Number регистрационный код лицензии.

https://import.viva64.com/docx/manual/Rider_ru/image13.png

Если вы ввели правильную лицензию, то надпись Invalid License будет заменена на Valid License, а поле Expires покажет дату окончания действия лицензии. Для подтверждения и сохранения введённой лицензии нажмите кнопку Save.

https://import.viva64.com/docx/manual/Rider_ru/image15.png

Настройки плагина

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

Settings - настройки ядра анализатора PVS-Studio. При наведении курсора мыши на название настройки появляется подсказка с описанием того, для чего эта настройка предназначена.

https://import.viva64.com/docx/manual/Rider_ru/image17.png

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

https://import.viva64.com/docx/manual/Rider_ru/image19.png

Excludes - содержит маски для имен файлов и путей, которые будут исключены из анализа.

https://import.viva64.com/docx/manual/Rider_ru/image21.png

Registration - содержит информацию о действующей лицензии.

https://import.viva64.com/docx/manual/Rider_ru/image23.png

Проверка кода из Rider с помощью PVS-Studio

JetBrains Rider может открывать проекты в 2-х режимах - непосредственно проект, и директорию с исходниками. При открытии проекта Rider может открывать как отдельные csproj файлы, так и solution, содержащий один или несколько таких проектов.

Если открыт файл проекта или solution'а, то имеется возможность анализировать:

  • Текущий проект/решение.
  • Элементы, выбранные в окне Explorer.
  • Файл, открытый в данный момент для редактирования.

Для анализа текущего проекта или solution'а можно воспользоваться пунктом меню Tools -> PVS-Studio -> Check Current Solution/Project.

https://import.viva64.com/docx/manual/Rider_ru/image24.png

Для анализа файла, открытого на редактирование, можно использовать пункт меню Tools -> PVS-Studio -> Check Open File.

https://import.viva64.com/docx/manual/Rider_ru/image25.png

Также можно выбрать несколько элементов в окне Explorer через CTRL/SHIFT + mouse Left Click, после чего выбрать пункт меню Tools -> PVS-Studio -> Check Selected Items:

https://import.viva64.com/docx/manual/Rider_ru/image26.png

Или аналогичный пункт меню (Check Selected Items) в контекстном меню Explorer, которое вызывается нажатием правой кнопки мыши:

https://import.viva64.com/docx/manual/Rider_ru/image28.png

В примерах, приведенных выше, будут проанализированы все *.cs и *.csproj файлы из папок Core, Controllers, а также файл Startup.cs.

Если в Rider открыта директория, PVS-Studio не может точно знать, какой именно проект, файл или solution нужно анализировать, поэтому команда проверки текущего проекта \ solution'а и команда проверки открытого файла не доступны. Доступна только проверка solution'а, при помощи команды Tools -> PVS-Studio -> Check Selected Items:

https://import.viva64.com/docx/manual/Rider_ru/image29.png

Или через контекстное меню в окне Explorer (Check Selected Items):

https://import.viva64.com/docx/manual/Rider_ru/image31.png

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

Во время анализа результаты работы анализатора выводятся в таблицу окна 'PVS-Studio':

https://import.viva64.com/docx/manual/Rider_ru/image32.png

Таблица состоит из 7 столбцов (слева направо: Favorite, Code, CWE, Message, Position, Projects, False Alarms). Имеется возможность сортировать сообщения в таблице по любому столбцу. Для изменения порядка сортировки необходимо кликнуть на заголовок столбца. Крайний левый столбец (Favorite) используется для пометки предупреждений, которая позволяет быстро найти все помеченные предупреждения, включив сортировку по столбцу Favorite.

https://import.viva64.com/docx/manual/Rider_ru/image34.png

При клике на строке в столбце Code / CWE в браузере будет открыта страница с подробным описанием предупреждения или потенциальной уязвимости. В столбце Message содержится краткое описание предупреждения. Столбец Position содержит список файлов, связанных с сообщением. Столбец Projects - список проектов, включающих в себя файл, на который выдано предупреждение анализатора. Крайний правый столбец False Alarms - служит для отображения сообщений, помеченных, как ложные срабатывания. Подробнее про работу с ложными срабатываниями будет описано дальше, в соответствующем подразделе.

При двойном клике левой кнопкой мыши на строке в таблице будет открыт файл на строке, в которой было найдено предупреждение анализатора:

https://import.viva64.com/docx/manual/Rider_ru/image35.png

Также над таблицей имеются кнопки-стрелки, позволяющие переключаться между предыдущим / следующим сообщением анализатора, и открывать файл, на который это предупреждение выдано, в редакторе кода. Над таблицей имеется несколько фильтров по уровню опасности предупреждений: High, Medium, Low и Fails (ошибки анализатора).

https://import.viva64.com/docx/manual/Rider_ru/image37.png

При нажатии на кнопку-лупу откроется дополнительная панель с полями ввода для столбцов Code, CWE, Message и Position. Каждое поле - это строковый фильтр для столбца, позволяющий отфильтровать сообщения из таблицы по введённому в эти поля тексту.

https://import.viva64.com/docx/manual/Rider_ru/image38.png

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

https://import.viva64.com/docx/manual/Rider_ru/image40.png

При нажатии на кнопку-шестеренку открывается главное окно настроек плагина, также доступное через команду меню 'Tools -> PVS-Studio -> Settings'.

Работа с ложными срабатываниями

Бывают ситуации, когда сообщение анализатора указывает на код, но программисту совершенно очевидно, что в этом коде нет ошибки. Такая ситуация называется ложным срабатыванием (false positive).

В плагине PVS-Studio для Rider имеется возможность пометить сообщение анализатора как ложное срабатывание. Такая пометка позволяет скрывать эти сообщения анализатора при последующем анализе кода.

Для разметки ложных срабатываний необходимо выбрать одно или несколько сообщений анализатора в таблице 'PVS-Studio', кликнуть правой кнопкой мыши на любой строке в таблице и в контекстном меню выбрать пункт 'Mark selected messages as False Alarms':

https://import.viva64.com/docx/manual/Rider_ru/image41.png

После выполнения данной команды анализатор добавит к строке, на которую выдаётся предупреждение анализатора, комментарий специального вида: \\-Vxxx, где xxx - это номер диагностического правила PVS-Studio. Такой комментарий также можно добавить в код вручную.

Помеченные ранее ложные срабатывания можно показать в таблице окна PVS-Studio с помощью настройки 'Show False Alarms', доступной через команду меню 'Tools -> PVS-Studio -> Settings':

https://import.viva64.com/docx/manual/Rider_ru/image43.png

С помощью команды контекстного меню 'Remove False Alarm marks from selected messages' можно удалить отметку ложного срабатывания с выбранных сообщений.

Более подробную информацию о подавлении предупреждений, выдаваемых анализатором PVS-Studio, а также информацию о других способах подавления сообщений анализатора с помощью файлов конфигурации (.pvsconfig), добавляемых в проект, можно найти в разделе документации Подавление ложных предупреждений.

Подавление предупреждений анализатора на старом (legacy) коде

Очень часто начать регулярно использовать статический анализ мешают многочисленные срабатывания на старом legacy коде. Такой код обычно уже хорошо оттестирован и стабильно работает, поэтому править в нём все срабатывания анализатора может оказаться нецелесообразно. Тем более, если размер кодовой базы достаточно велик, такая правка может потребовать большого времени. При этом, такие сообщения на существующий код мешают смотреть сообщения на код новый, ещё находящийся в разработке.

Чтобы решить данную проблему и начать сразу регулярно использовать статический анализ, PVS-Studio предлагает возможность "отключить" сообщения на старом коде. Чтобы подавить сообщения анализатора на старом коде можно воспользоваться командой главного меню 'Tools -> PVS-Studio -> Suppress All Messages' или кнопкой 'Suppress All Messages' на панели окна PVS-Studio. Механизм подавления работает с помощью специальных *.suppress файлов, в которые добавляются подавленные сообщения анализатора после выполнения команды 'Suppress All Messages'. При последующем запуске анализа все сообщения, добавленные в такие *.suppress файлы, не попадут в отчёт анализатора. Система подавления через *.suppress файлы достаточно гибкая и способна "отслеживать" подавленные сообщения даже при модификации и сдвигах участков кода, в которых выдаётся подавленное сообщение.

Файлы *.suppress создаются на уровне проекта, рядом с каждым проектным файлов, но их также можно добавить в любой проект или solution (например, чтобы использовать один общий suppress файл для нескольких проектов или всего soulution'а). Чтобы вернуть сообщения в вывод анализатора, необходимо удалить suppress файлы для соответствующих проектов.

Более подробное описание подавления предупреждений анализатора, и описание работы с *.suppress файлами, можно прочитать в разделе документации Массовое подавление сообщений анализатора.

Контекстное меню таблицы предупреждений

При нажатии правой кнопкой мыши на строке с сообщением анализатора в таблице окна PVS-Studio, откроется контекстное меню, содержащее дополнительные команды для выбранных сообщений анализатора.

Команда 'Mark selected messages as False Alarms / Remove false alarm masks' позволяет разметить сообщение анализатора, как ложное срабатывание, добавив в код, на который выдано предупреждение, комментарий специального вида (более подробно про работу с ложными срабатываниями рассказано, в соответствующем подразделе).

Команда 'Exclude from analysis' позволяет добавить путь или часть пути к файлу, в котором найдено предупреждение анализатора, в список исключённых из анализа директорий. Все файлы, пути до которых попадут под данный фильтр, будут исключены из анализа.

https://import.viva64.com/docx/manual/Rider_ru/image45.png

Сохранение и загрузка результатов анализа

Для сохранения или загрузки результатов работы анализатора можно воспользоваться командами главного меню, доступными через 'Tools -> PVS-Studio':

https://import.viva64.com/docx/manual/Rider_ru/image47.png

Команда 'Open Report' открывает .json файл отчета и загружает его содержимое в таблицу окна 'PVS-Studio'.

Подменю 'Recent Reports' показывает список из нескольких последних открытых файлов отчетов. При нажатии на элемент в списке будет открыт соответствующий отчет (если отчет еще существует по такому пути), и его содержимое будет загружено в таблицу окна 'PVS-Studio'.

Команда 'Save Report' сохраняет все сообщения из таблицы (даже отфильтрованные) в .json файл отчета. Если текущий результат анализа еще ни разу не сохранялся, то будет предложено задать имя и место для сохранения отчета.

Аналогично, команда 'Save Report As' сохраняет все предупреждения из таблицы (даже отфильтрованные) в .json файл отчета, всегда предлагая выбрать место сохранения отчёта на диске.


Найденные ошибки

Проверено проектов
409
Собрано ошибок
14 072

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять