Во время отладки приложения разработчику требуется анализировать свой код, что не всегда является удобным. Для помощи с анализом созданы **статистические анализаторы**. Внедрение такого инструмента позволяет устранять многие ошибки на этапе "зарождения", тем самым экономя время и ресурсы на их последующее устранение. Из этого следует, что статический анализатор необходимо использовать регулярно, именно в таком случае он проявит себя наиболее эффективно. Одним из таких статистических анализаторов является **PVS-Studio**. **PVS-Studio** - статический анализатор С, С++, C# и Java кода, предназначенный для облегчения задачи поиска и исправления различного рода ошибок. Анализатор можно использовать в Windows, Linux и macOS. При работе с Windows анализатор интегрируется в Visual Studio в качестве плагина, предоставляя удобный интерфейс для ориентации в коде и поиска проблемных мест. Также присутствует приложение C and C++ Compiler Monitoring UI (Standalone.exe), независимое от Visual Studio и позволяющее проверять файлы, компилируемые не только с помощью Visual C++, но и с использованием GCC (MinGW), Clang. Консольная утилита PVS-Studio_Cmd.exe позволит выполнять проверку MSBuild/Visual Studio проектов без запуска IDE или Compiler Monitoring UI. PVS-Studio для Linux представляет собой **консольное приложение**. PVS-Studio разделяет все предупреждения по 3 уровням достоверности: **High**, **Medium** и **Low**. Также некоторые сообщения относятся к особой категории **Fails**. 1. High - включает в себя предупреждения с максимальным уровнем достоверности. Такие предупреждения часто указывают на ошибки, требующие немедленного исправления. 2. Medium - содержит менее достоверные предупреждения, на которые все же стоит обратить пристальное внимание. 3. Low - предупреждения с минимальным уровнем достоверности, указывающие на несущественные неточности в коде. Среди таких предупреждений обычно велик процент ложных срабатываний. **Fails** - внутренние сообщения анализатора, информирующие о возникновении каких-то проблем при работе. В группу Fails попадают сообщения об ошибках анализатора (например, сообщения с кодами V001, V003 и т.п.), а также любой необработанный вывод вспомогательных программ, используемых самим анализатором во время анализа (препроцессор, командный процессор cmd), выдаваемый ими в stdout/stderr. Анализатор содержит 5 видов диагностических правил: **General (GA)** - диагностики общего плана. Основной набор диагностических правил PVS-Studio. **Optimization (OP)** - диагностики микрооптимизации. Указания по повышению эффективности и безопасности кода. **64-bit (64)** - диагностики, позволяющие выявлять специфические ошибки, связанные с разработкой 64-битных приложений, а также переносом кода с 32-битной на 64-битную платформу. **Customers' Specific (CS)** - узкоспециализированные диагностики, разработанные по просьбам пользователей. По умолчанию этот набор диагностик отключен. **MISRA** - диагностики, разработанные в соответствии со стандартом MISRA (Motor Industry Software Reliability Association). По умолчанию этот набор диагностик отключен. В меню настроек есть возможность настроить PVS-Studio оптимальным образом для удобства работы. Например, присутствуют следующие возможности: выбор препроцессора, исключение файлов и папок из проверки, выбор типов диагностических сообщений, выводящихся при проверке и множество прочих настроек. PVS-Studio может использоваться независимо от интегрированной среды разработки Microsoft Visual Studio. Compiler Monitoring UI позволяет проверять проекты в процессе их сборки. В этой версии также поддерживаются переходы по коду по диагностическим сообщениям, поиск фрагментов кода, определений макросов и типов данных. **PVS-Studio_Cmd.exe** - модуль, позволяющий выполнять анализ решений Visual Studio (.sln), а также Visual C++ и Visual C# проектов (.vcxproj, .csproj) из командной строки. Это может быть полезно, например, в случае необходимости интеграции статического анализа на сборочном сервере. PVS-Studio_Cmd.exe позволяет проводить как полный анализ целевого проекта, так и инкрементальный (анализ файлов, изменившихся с момента последний сборки). Представление кода возврата работы утилиты в виде битовой маски позволяет получить подробную информацию о результатах анализа и идентифицировать проблемы, в случае их наличия. Таким образом, используя модуль PVS-Studio_Cmd.exe, можно достаточно 'тонко' настроить сценарий статического анализа кода и внедрить его в процесс CI. PVS-Studio обладает **обширной справочной системой диагностических сообщений**. Эта база доступна как при работе с инструментом PVS-Studio, так и на официальном сайте. К различным диагностическим сообщениям прилагаются примеры кода, содержащего подобные ошибки, описание проблемы, а также возможные варианты исправления. Чтобы изучить описание той или иной диагностики, достаточно кликнуть левой кнопкой мыши по номеру диагностики в окне вывода сообщений. Эти номера оформлены как гиперссылки. **Поддержка** для PVS-Studio осуществляется **посредством электронной почты**. Так как с клиентами общаются непосредственно разработчики анализатора, это позволяет быстро получать ответы на самые разные вопросы. Когда вы просмотрите все сообщения, которые выдал анализатор кода, то вы найдете как реальные ошибки в программах, так и конструкции, не являющиеся ошибочными. Дело в том, что **анализатор не может на 100% точно определить все ошибки в программах без так называемых "ложных срабатываний"**. Определить какие ошибки являются ложными, а какие нет – ваша обязанность, анализатор кода же только существенно сокращает количество мест, которые вам необходимо проверить.