[Главная](<https://pvs-studio.ru/ru/>)

>

Анализатор PVS‑Studio 

#  PVS-Studio – статический анализатор на страже качества, защищённости (SAST) и безопасности кода 

##  Что такое PVS‑Studio? 

###  Давайте мы расскажем об этом! 

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

[ Смотреть видео о PVS‑Studio ](<https://pvs-studio.ru/ru/blog/video/opportunities/>)

Или вы можете ознакомиться с возможностями нашего продукта, посмотрев презентацию. 

![Presentation icon](/static/images/icons/presentation.svg) [ Посмотреть презентацию ](<https://docs.google.com/presentation/d/e/2PACX-1vTR1z-ILv-Tt9y7D9clFPuW8q-mTZ-bN_9-rQCfQEP6a1hMlPgzGEsuE5xdsY9REXdolNy2YCx36UgX/pub?start=false&loop=false&delayms=3000>)

Когда пора использовать анализатор PVS‑Studio 

Разработчику

Часто допускаются ошибки при разработке

Длительная отладка при поиске ошибок

Ошибки попадают в систему контроля версий

Сложно возвращаться к отладке кода, когда ошибка была обнаружена на этапе тестирования

[ Менеджеру Частый возврат к старым задачам из-за багов Ошибки попадают в продакшн, их видят пользователи Снижение качества кода с ростом числа сотрудников С увеличением объёма кода, сложно оценивать его качество и надёжность ](<https://pvs-studio.ru/ru/pvs-studio/for-managers/>)

[ Security специалисту Сложности с внешним аудитом Потенциальные клиенты требуют использования подобных инструментов Требование к использованию security и safety стандартов при разработке Необходимо учитывать требования ГОСТ Р 71207–2024 ](<https://pvs-studio.ru/ru/pvs-studio/security/>)

Как PVS-Studio выявляет потенциальные уязвимости 

![cwe diagram](/static/images/backgrounds/cwe_diagram_small.svg)

Анализатор PVS-Studio выявляет не только опечатки, мёртвый код и другие ошибки, но и потенциальные уязвимости (Static Application Security Testing, SAST).

Анализатор отображает предупреждения на Common Weakness Enumeration, SEI CERT Coding Standards, а также поддерживает стандарт MISRA.

Таблицы соответствий диагностик PVS-Studio различным стандартам:

[CWE](<https://pvs-studio.ru/ru/pvs-studio/sast/cwe/>)

[Sei Cert](<https://pvs-studio.ru/ru/pvs-studio/sast/cert/>)

[Misra](<https://pvs-studio.ru/ru/pvs-studio/sast/misra/>)

[OWASP](<https://pvs-studio.ru/ru/pvs-studio/sast/owasp/>)

[AUTOSAR](<https://pvs-studio.ru/ru/pvs-studio/sast/autosar/>)

[ГОСТ Р 71207‑2024](<https://pvs-studio.ru/ru/pvs-studio/gost-71207/>)

[Подробнее...](<https://pvs-studio.ru/ru/pvs-studio/sast/>)

Куда интегрируется PVS-Studio 

IDE 

![Visual Studio](/static/images/integrated/Visual_Studio_Icon_2026.svg)

[Visual Studio](<https://pvs-studio.ru/ru/docs/manual/6522/>)

![Visual Studio Code](/static/images/integrated/vcstuido.svg)

[Visual Studio Code](<https://pvs-studio.ru/ru/docs/manual/6646/>)

![WebStorm](/static/images/integrated/webstorm.svg)

[WebStorm](<https://pvs-studio.ru/ru/docs/manual/7189/>)

![PhpStorm](/static/images/integrated/phpstorm.svg)

[PhpStorm](<https://pvs-studio.ru/ru/docs/manual/7189/>)

![GoLand](/static/images/integrated/goland.svg)

[GoLand](<https://pvs-studio.ru/ru/docs/manual/7190/>)

![IntelliJ IDEA](/static/images/integrated/icon-intellij-idea.svg)

[IntelliJ IDEA](<https://pvs-studio.ru/ru/docs/manual/6704/>)

![Rider](/static/images/integrated/icon-rider.svg)

[Rider](<https://pvs-studio.ru/ru/docs/manual/0052/>)

![CLion](/static/images/integrated/clion.svg)

[CLion](<https://pvs-studio.ru/ru/docs/manual/0052/>)

![OpenIDE](/static/images/integrated/OpenIDE.svg)

[OpenIDE](<https://pvs-studio.ru/ru/docs/manual/6704/>)

![Qt Creator](/static/images/integrated/QtProject-qtcreator.png)

[Qt Creator](<https://pvs-studio.ru/ru/docs/manual/6648/>)

Игровые движки 

![Unreal Engine](/static/images/integrated/Unreal_Engine_Logo.svg)

[Unreal Engine](<https://pvs-studio.ru/ru/docs/manual/0043/>)

![Unity](/static/images/integrated/unity_logo.svg)

[Unity](<https://pvs-studio.ru/ru/docs/manual/6607/>)

Качество кода 

![SonarQube](/static/images/integrated/SonarQube-icon.png)

[SonarQube](<https://pvs-studio.ru/ru/docs/manual/0037/>)

![DefectDojo](/static/images/integrated/DefectDojo-3.png)

[DefectDojo](<https://pvs-studio.ru/ru/docs/manual/6686/>)

![CodeChecker](/static/images/integrated/logo_codechecker.png)

[CodeChecker](<https://pvs-studio.ru/ru/docs/manual/6819/>)

Embedded 

![Keil µVision, DS-MDK](/static/images/integrated/keil_icon.svg)

Keil µVision, DS-MDK 

![IAR Embedded Workbench](/static/images/integrated/iar_icon.svg)

IAR Embedded Workbench 

![QNX Momentics](/static/images/integrated/qnx_2026.svg)

QNX Momentics 

![TI ARM Code Generation](/static/images/integrated/ti_arm_icon.svg)

TI ARM Code Generation 

Сборочные системы 

![MSBuild](/static/images/integrated/MSBuild-Logo.svg)

[MSBuild](<https://pvs-studio.ru/ru/docs/manual/0035/>)

![CMake](/static/images/integrated/make_icon.svg)

[CMake](<https://pvs-studio.ru/ru/docs/manual/6591/>)

![Make](/static/images/integrated/Official_gnu.svg)

Make 

![Ninja](/static/images/integrated/Ninja_icon.svg)

[Ninja](<https://pvs-studio.ru/ru/docs/manual/0036/>)

![Gradle](/static/images/integrated/gradle-elephant-icon-dark-green-secondary.svg)

[Gradle](<https://pvs-studio.ru/ru/docs/manual/6706/>)

![Maven](/static/images/integrated/file_type_maven_icon_130397.svg)

[Maven](<https://pvs-studio.ru/ru/docs/manual/6705/>)

![JSON Compilation Database](/static/images/logo/dragon_medium.png)

[JSON Compilation Database](<https://pvs-studio.ru/ru/docs/manual/6557/>)

Виртуализация 

![Docker](/static/images/integrated/docker-tile.svg)

[Docker](<https://pvs-studio.ru/ru/docs/manual/0047/>)

![WSL](/static/images/integrated/wsl_new.png)

WSL 

Распределенная сборка 

![Incredibuild](/static/images/integrated/incdibuild_logo_high101.svg)

[Incredibuild](<https://pvs-studio.ru/ru/docs/manual/0041/>)

CI 

![Jenkins](/static/images/integrated/jenkins-icon.svg)

[Jenkins](<https://pvs-studio.ru/ru/docs/manual/0048/>)

![TeamCity](/static/images/integrated/icon-teamcity.svg)

[TeamCity](<https://pvs-studio.ru/ru/docs/manual/0049/>)

Облачные CI 

![CircleCI](/static/images/integrated/icons8-circleci.svg)

[CircleCI](<https://pvs-studio.ru/ru/docs/manual/0054/>)

![Travis CI](/static/images/integrated/Travis_icon.svg)

[Travis CI](<https://pvs-studio.ru/ru/docs/manual/0057/>)

![GitLab](/static/images/integrated/wm_web.svg)

[GitLab](<https://pvs-studio.ru/ru/docs/manual/0056/>)

![Azure DevOps](/static/images/integrated/Azure_icon.svg)

[Azure DevOps](<https://pvs-studio.ru/ru/docs/manual/0053/>)

![GitHub Actions](/static/images/integrated/github_actions.svg)

[GitHub Actions](<https://pvs-studio.ru/ru/docs/manual/6579/>)

## Возможность работы через браузер

Работайте с результатами PVS‑Studio через браузер, размечайте ложные срабатывания и назначайте ответственных за исправление

  * [Подробнее о работе с CodeChecker](<https://pvs-studio.ru/ru/docs/manual/6819/>)
  * [Подробнее о работе с SonarQube](<https://pvs-studio.ru/ru/docs/manual/0037/>)

Поддерживаемые языки и компиляторы 

**Windows**

Visual Studio C, C++, C++/CLI, C++/CX (WinRT)

MinGW C, C++

Texas Instruments Code Composer Studio, C6000-CGT, C, C++

**Windows/Linux/macOS**

GNU Arm Embedded Toolchain, Arm Embedded  
GCC compiler, C, C++

GNU toolchain for RISC-V, C, C++

CLion, Qt Creator, VS Code, GCC, Clang C, C++

IntelliJ IDEA, Android Studio, VS Code Java

Visual Studio, JetBrains Rider, VS Code, .NET Framework, .NET C#

WebStorm, PhpStorm, VS Code JavaScript, TypeScript

GoLand, VS Code Go

Texas Instruments C2000-CGT, C, C++

**Windows/Linux**

IAR Embedded Workbench, C/C++ Compiler for ARM C, C++

QNX Momentics, QCC C, C++

Keil µVision, DS-MDK, ARM Compiler 5/6 C, C++

Texas Instruments Code Composer Studio, ARM Code  
Generation Tools C, C++

MPLAB XC8 C

Начать использовать PVS‑Studio легко

### Пробуете впервые?  
Посмотрите на самые интересные предупреждения

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

[Подробнее...](<https://pvs-studio.ru/ru/docs/manual/6532/>)

### Внедряете в проект?  
Скройте предупреждения на legacy-код

Так вы будете работать только с предупреждениями, выданными на новый код. Если нужно, к старым можно вернуться позже.

[Подробнее...](<https://pvs-studio.ru/ru/docs/manual/0032/>)

Какие типы проблем обнаруживает PVS-Studio

Quality 

Опечатки

Разыменование нулевого указателя / нулевой ссылки

Выход за границу массива

Некорректные операции сдвига

и пр.

Security 

[CWE](<https://pvs-studio.ru/ru/pvs-studio/sast/cwe/>)

[SEI CERT](<https://pvs-studio.ru/ru/pvs-studio/sast/cert/>)

[OWASP](<https://pvs-studio.ru/ru/pvs-studio/sast/owasp/>)

[Уязвимые компоненты (SCA)](<https://pvs-studio.ru/ru/pvs-studio/sca/>)

[Критические ошибки, перечисленные в ГОСТ Р 71207–2024](<https://pvs-studio.ru/ru/pvs-studio/gost-71207/>)

Safety 

[MISRA](<https://pvs-studio.ru/ru/pvs-studio/sast/misra/>)

[AUTOSAR](<https://pvs-studio.ru/ru/pvs-studio/sast/autosar/>)

[Смотреть все типы ошибок](<https://pvs-studio.ru/ru/docs/warnings/>)

PVS-Studio выбирают за...

Экспертную техническую поддержку

За годы работы мы сформировали коллектив настоящих экспертов в области анализа кода. Сами разработчики анализатора помогают клиентам в решении разных вопросов.

Возможность офлайн-использования

Вы можете использовать наш продукт офлайн на всех этапах. Установка, активация и запуск не требуют от вас подключения к сети. Это идеальное решение для компаний, которые ведут изолированную разработку, например, в финансовой сфере.

Простоту использования

Быстро попробовать анализатор без интеграции в проект можно с помощью системы мониторинга компиляции, которая разработана для Windows и Linux.

Диагностические возможности

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

Кроссплатформенность

Сейчас выгоднее выпускать программные продукты под несколько платформ сразу. Кроссплатформенный анализатор обеспечивает таким клиентам полное покрытие кода.

Удобные отчёты анализатора

Доступны в форматах Html, Xml, Csv, Txt, Json, CompileError, TaskList, TeamCity. А сам генератор опубликован на GitHub для пользовательских модификаций.

Удобный CLI

Нет ничего проще, чем запустить анализатор из командной строки или интегрировать запуск в скрипт сборки или CI.

Плагины

Для улучшения взаимодействия с анализатором предоставляются плагины для Visual Studio, IntelliJ IDEA, Rider, SonarQube, Jenkins и других подобных продуктов.

Режим проверки Lеgаcy-кода

Внедрение анализаторов часто останавливает объём существующей кодовой базы. Но только не PVS-Studio. Уже с первого дня PVS-Studio можно использовать для проверки нового кода, а предупреждения на старый (Legacy) код можно скрыть до востребования.

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

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

![](/static/images/logo/pvs_logo.png) ![](/static/images/logo/pvs_logo_2.png)

[Скачать дистрибутив](</ru/pvs-studio/download/>)

Количество диагностик   
в PVS-Studio растет из года в год 

Количество диагностик

Количество диагностик

Годы 

Как PVS-Studio все это делает?

![Based on compilation parameters icon](/static/images/preprocessing.png)

**Препроцессирование** (preprocessing) исходных C и C++ файлов позволяет, основываясь на параметрах компиляции, раскрывать директивы препроцессора: включать заголовочные файлы и подставлять макросы. Используется для создания наиболее полной семантической модели (semantic model) проверяемого кода. 

![The pattern-based analysis icon](/static/images/icons/abstract/1.png)

**Сигнатурный анализ** (сопоставление с шаблоном, pattern-based analysis) на основе абстрактного синтаксического дерева применяется для поиска мест в исходном коде, которые похожи на известные шаблоны кода с ошибкой. 

![Method annotations icon](/static/images/icons/abstract/2.png)

**Аннотирование методов** (method annotations) предоставляет больше информации об используемых методах, чем может быть получено путём анализа только их сигнатуры. 

![Data-flow analysis icon](/static/images/icons/abstract/3.png)

**Анализ потока данных** (data-flow analysis) используется для вычисления ограничений, накладываемых на значения переменных при обработке различных конструкций языка. Например, какие значения может принимать переменная внутри блоков if/else. 

![Type inference icon](/static/images/icons/abstract/4.png)

**Символьное выполнение** (symbolic execution) позволяет вычислять значения переменных, которые могут приводить к ошибкам, производить проверку диапазонов (range checking) значений. 

![Symbolic execution icon](/static/images/icons/abstract/5.png)

**Вывод типов** (type inference) на основе семантической модели программы позволяет анализатору иметь полную информацию обо всех переменных и выражениях, встречающихся в коде. 

![Tainted data analysis icon](/static/images/icons/abstract/taint.png)

**Анализ помеченных данных** (tainted data analysis) позволяет обнаруживать случаи, когда данные от пользователей используются без предварительной проверки. Излишнее доверие к входным данным является причиной различных уязвимостей (например, SQLI, XSS, path traversal). 

![Intermodular analysis icon](/static/images/icons/abstract/intermodular.png)

**Межмодульный анализ** (intermodular analysis) позволяет во время анализа учитывать в диагностических правилах информацию о функциях, объявленных в других единицах трансляции. 

![Software composition analysis icon](/static/images/icons/abstract/sca_icon.png)

**Анализ компонентного состава ПО** (Software Composition Analysis, SCA) используется, чтобы искать зависимости приложения от компонентов, которые содержат уязвимости.