﻿# Работа PVS\-Studio в Visual Studio

Плагин PVS\-Studio для среды разработки Microsoft Visual Studio не только предоставляет удобный графический интерфейс и возможности статического анализа, но и широкий спектр дополнительных возможностей по работе с сообщениями анализатора\.

Установить его вы можете как из [официального репозитория плагинов](https://marketplace.visualstudio.com/items?itemName=EvgeniyRyzhkov.PVS-Studio), так и при помощи нашего установщика для Windows, который доступен на [странице загрузки](https://pvs-studio.ru/ru/pvs-studio/download/)\. 

## Смотри, а не читай \(ВК Видео\)



<https://vk.com/video_ext.php?oid=-11805870&id=456239344&hash=a3411350246999ab>



## Установка плагина из Visual Studio Marketplace

Чтобы установить плагин PVS\-Studio для Visual Studio из **Marketplace**, нужно перейти в управление плагинами \(_Manage Extensions_\) с помощью команды **Extensions \-\> Manage Extensions** и ввести в поиске _PVS\-Studio_\. В результатах поиска появится нужный плагин:

![VisualStudio_ru/image1.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image1.png)

После нажатия на кнопку **Download** начнётся автоматическая загрузка установщика PVS\-Studio для Windows, который содержит не только сам плагин, но также ядро анализатора и вспомогательные инструменты\.

Установщик попросит закрыть все активные процессы в доступных средах разработки и предложит на выбор плагины для всех установленных IDE:

![VisualStudio_ru/image2.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image2.png)

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

Первое, что нужно сделать после установки – ввести лицензию\. Процесс ввода лицензии в Visual Studio подробно описан в [документации](https://pvs-studio.ru/ru/docs/manual/0046/#VisualStudio)\.

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

Помимо **Registration **есть и другие настройки – давайте рассмотрим их подробнее\.

### Common Analyzer Settings

Первый раздел в списке – это **Common Analyzer Settings**:

![VisualStudio_ru/image4.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image4.png)

По умолчанию в этой вкладке выставляются оптимальные для использования настройки\. Так **ThreadCount **\(_количество потоков_\)** **равно числу ядер на используемом процессоре\.

**RemoveIntermediateFiles** же может понадобиться, если будет обнаружена какая\-либо проблема в работе анализатора и [нужно будет сообщить о ней нам](https://pvs-studio.ru/ru/about-feedback/)\. При выборе **false **после анализа останутся артефакты \(_препроцессированные файлы и файлы конфигурации_\), которые помогут обнаружить проблему\.

### Detectable Errors

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

![VisualStudio_ru/image6.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image6.png)

### Don't Check Files

Крайне полезный раздел, который поможет улучшить качество и скорость анализа при помощи исключения лишних файлов, которые, например, не относятся напрямую к проекту:

![VisualStudio_ru/image8.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image8.png)

По умолчанию уже указаны самые распространённые исключаемые директории и расширения\. Если у вас будут срабатывания, например, на _third party код_, то стоит добавить его в **PathMasks**\.

Подробнее про **Don't Check Files** можно посмотреть в [соответствующем разделе документации\.](https://pvs-studio.ru/ru/docs/manual/0014/)

### Keyword Message Filtering

При помощи **Keyword Message Filtering **можно указать ключевые слова, которые нужно исключить из результатов анализа:

![VisualStudio_ru/image10.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image10.png)

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

### Specific Analyzer Settings

По умолчанию плагин настроен для работы в самых распространённых условиях, однако если проект имеет специфичные особенности, то можно дополнительно настроить анализатор при помощи раздела **Specific Analyzer Settings**:

![VisualStudio_ru/image11.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image11.png)

Подробное описание дополнительных настроек можно найти в [специальном разделе документации](https://pvs-studio.ru/ru/docs/manual/0030/)\.

## Запуск анализа PVS\-Studio

В плагине PVS\-Studio поддерживается анализ не только всего решения, но также отдельных проектов и файлов\. Для запуска анализа можно выбрать интересующие файлы и проекты, и запустить на них анализ из контекстного меню:

![VisualStudio_ru/image13.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image13.png)

Также всегда можно запустить анализ для текущего файла:

* из меню плагина PVS\-Studio; 
* из контекстного меню файла;
* из контекстного меню заголовка файла в редакторе файла\. 

Дополнительно в элементе меню "Check" имеется несколько пунктов меню для более специфичных вариантов анализа:

![VisualStudio_ru/image15.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image15.png)

Плагин PVS\-Studio для Visual Studio поддерживает проверку проектов и исходных файлов для языков C, С\+\+ и C\#\. Для языка C\+\+ поддерживается проверка стандартных Visual C\+\+ проектов, использующих сборочную систему MSBuild\.

Для проверки специфичных проектов, таких, как, например, NMake проекты, можно воспользоваться [системой отслеживания вызовов компилятора](https://pvs-studio.ru/ru/docs/manual/0031/)\.

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

После анализа в IDE появится панель с результатами анализа:

![VisualStudio_ru/image17.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image17.png)

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

При помощи двойного клика по строке можно легко перейти на участок кода, содержащий подозрительное место:

![VisualStudio_ru/image19.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image19.png)

А при нажатии на три полоски открывается дополнительное меню панели PVS\-Studio:

![VisualStudio_ru/image21.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image21.png)

Подробнее про работу со списком предупреждений можно прочитать в [документации](https://pvs-studio.ru/ru/docs/manual/0021/)\.

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

При первом запуске анализатора на большом проекте может быть действительно много срабатываний\. Разумеется, стоит выписать себе самые интересные, а вот остальные можно со спокойной душой скрыть при помощи механизма **подавления предупреждений**, ведь ваш код уже протестирован и работает\. Так как маловероятно, что вы найдете среди них критичные для работы приложения проблемы \(_однако и такое может быть_\)\.

Для подавления всех предупреждений нужно выбрать пункт **Suppress All Messages **в дополнительной панели плагина:

![VisualStudio_ru/image23.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image23.png)

После этого они будут добавлены в специальные _\*\.suppress _файлы\. Так как при подавлении учитываются и соседние строки, при смещении кода сообщения не появятся вновь\. Однако, если внести правку рядом с предупреждением, тогда оно будет вновь показано при последующем запуске анализа\.

Подробное описание подавления предупреждений и работы с _\*\.suppress _файлами вы найдёте в разделе документации [Подавление сообщений анализатора](https://pvs-studio.ru/ru/docs/manual/0032/)\.

Также предлагаем познакомиться со статьёй "[Как внедрить статический анализатор кода в legacy проект и не демотивировать команду](https://pvs-studio.ru/ru/blog/posts/0743/)"\. 

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

Так или иначе во время работы с анализатором будут появляться ложные срабатывания \(_false positive_\)\. Для таких ситуаций предусмотрен специальный механизм подавления и фильтрации\.

Чтобы пометить сообщение как ложное, кликните на строку с предупреждением правой кнопкой мыши и выберите **Mark selected messages as False Alarms**:



![VisualStudio_ru/image25.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image25.png)

После этого к строке с предупреждением добавится комментарий типа _//\-Vxxx_, где _xxx_ – это номер диагностического правила PVS\-Studio\. Такой комментарий также можно добавить в код вручную\. При помощи команды контекстного меню **Remove False Alarm marks from selected messages** можно удалить отметку ложного срабатывания с выбранных сообщений\.

Если же вы не хотите добавлять комментарии в код, тогда можно воспользоваться механизмом подавления сообщений и добавить предупреждение в _\*\.suppress _файл\. Чтобы это сделать, выберите другой пункт контекстного меню **Add selected messages to suppression file**:

![VisualStudio_ru/image27.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image27.png)

Подробное описание работы механизма подавления ложных срабатываний вы найдёте в разделе документации [Подавление ложно\-позитивных предупреждений](https://pvs-studio.ru/ru/docs/manual/0017/)\.

### Просмотр интересных предупреждений анализатора

Если Вы только начали изучать инструмент статического анализа и хотели бы узнать на что он способен, то можете воспользоваться механизмом [Best Warnings](https://pvs-studio.ru/ru/docs/manual/6532/)\. Данный механизм покажет вам наиболее важные и достоверные предупреждения\. 

Чтобы посмотреть наиболее интересные предупреждения с точки зрения анализатора нажмите на кнопку 'Best', как показано на скриншоте ниже:

![VisualStudio_ru/image29.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image29.png)

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

## Горячие клавиши плагина PVS\-Studio в Visual Studio

Плагин для Visual Studio добавляет окно просмотра результатов анализа PVS\-Studio, которое имеет контекстное меню, появляющееся при нажатии правой кнопкой мыши в окне с результатами анализа:

![VisualStudio_ru/image30.png](https://import.viva64.com/docx/blog/VisualStudio_ru/image30.png)

Некоторым действиям из этого меню назначены горячие клавиши, что позволяет выполнять их без использования мыши\.

Кнопки со стрелками, предназначенные для навигации по сообщениям анализатора, также имеют горячие клавиши:

* перейти к предыдущему сообщению: Alt \+ \[;
* перейти к следующему сообщению: Alt \+ \]\.

Использование горячие клавиш полезно, потому что позволяет ускорить процесс обработки результатов анализа\. Их можно назначать\\переопределять в настройках: Tools \-\> Options \-\> Keyboard\. Чтобы быстрее их найти, необходимо ввести 'PVSStudio' в поле поиска окна Keyboard\.

## Работа с плагином Qt VS Tools

На данный момент для анализа проектов, собираемых с помощью плагина Qt VS Tools, необходимо вручную проставлять пути для заголовочных файлов Qt в свойства проекта\. В противном случае, анализ не пройдёт успешно, так как на данный момент у анализатора нет возможности получить информацию о заголовочных файлах от плагина Qt VS Tools\.

Путь до заголовочных файлов можно получить, взяв путь до установленного Qt из Qt Version \(Extensions \-\> Qt VS Tools \-\> Qt Versions\) и прибавив к нему `\include`\. Получившийся путь необходимо добавить в свойство проекта `Additional Includes`\.

## Полезные ссылки

* [Режим инкрементального анализа PVS\-Studio](https://pvs-studio.ru/ru/docs/manual/0024/)
* [Массовое подавление предупреждений](https://pvs-studio.ru/ru/docs/manual/0032/)
* [Подавление ложных предупреждений](https://pvs-studio.ru/ru/docs/manual/0017/)
* [Отображение лучших предупреждений анализатора \(Best Warnings\)](https://pvs-studio.ru/ru/docs/manual/6532/)