BIS Journal №4(59)2025

22 декабря, 2025

Статический анализатор PVS-Studio за пределами РБПО

Публикации этого журнала во многом ориентированы на тему разработки безопасного ПО (РБПО), рассматривая методологии и продукты именно с этой точки зрения. Мы сами ранее упоминали PVS-Studio в журнале именно в контексте РБПО. Однако статический анализ — это не только про безопасность.

Вернее, статический анализ — это всегда про безопасность, качество и надёжность кода. Но работа над этими характеристиками может происходить вне классических понятий и ГОСТов. Взглянем на PVS-Studio за пределами описания:

PVS-Studio — статический анализатор кода, совместимый с ГОСТ Р 71207-2024, выявляющий критические ошибки в коде на языкахC, C++, C#, Java. Включён в Реестр российского ПО: запись № 9837. Может применяться для построения РБПО согласно ГОСТ Р 56939-2024. Соответствует требованиям «Методики выявления уязвимостей и НДВ в программном обеспечении». 

Теперь посмотрим на инструмент с других сторон.

В PVS-Studio реализовано множество диагностик для поиска опечаток и дефектов, связанных с написанием кода методом copy-paste. Особенность детекторов опечаток в том, что многие из них построены на эмпирических алгоритмах. Это их и слабая, и сильная сторона.

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

Например, C++ анализатор может выявить ошибки формирования строк с HTML-кодом. Выявит незакрытые теги или их дублирование, хотя этот баг не имеет никакого отношения к языку C++ (см. диагностику V735).

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

И всё же PVS-Studio помогает оптимизировать код благодаря диагностикам «микрооптимизации». Отдельный найденный фрагмент неоптимального кода не ускорит программу, но исправление сотен таких предупреждений в сумме может давать заметный результат.

Пример срабатывания диагностики V813 на C++ код реального приложения. Контейнер передаётся по значению, но его элементы используются только для чтения:

void

addDescriptions(

std::vector<std::pair<int, std::string>> toAdd)

{

  if (m_descCount + toAdd.size() >

MAX_POLICY_DESCRIPTIONS)

  ....

  for (const auto &it : toAdd)

....

}

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

Для помощи разработчикам игр инструментPVS-Studio интегрируется с такими игровыми движками, как Unreal Engine (С++) и Unity Engine (C#). Анализатор не только удобно встраивается в соответствующие CI/CD-конвейеры, но и учитывает особенности движков, реализуя узкоспециализированные диагностики.

Пример диагностики для Unity Engine: V3205.

Анализатор обнаруживает нежелательное создание экземпляра классов 'MonoBehaviour' или 'ScriptableObject' с помощью оператора 'new'. Объекты, созданные таким образом, не будут связаны с движком, поэтому такие специфичные Unity-методы, как 'Update', 'Awake', 'OnEnable' и прочие, вызываться не будут.

На практике при выборе инструмента приходится учитывать удобство интерфейса и интеграцию с другими системами. Нашей командой проделана большая работа в этом направлении. В настоящее время PVS-Studio интегрируется:

  • сIDE (Visual Studio, IntelliJ IDEA, Rider, OpenIDE, CLion, Visual Studio Code, Qt Creator);
  • сборочными системами (MSBuild, CMake, Ninja, Gradle, Maven, JSON Compilation Database);
  • облачными CI (CircleCI, Travis CI, GitLab, Azure DevOps, GitHub Actions);

и т. д.

Запускается на большом количестве ОС, в том числе отечественных: Windows, macOS, Arch Linux, Astra Linux, CentOS, Debian GNU/Linux, Fedora, Linux Mint, openSUSE, Ubuntu, РЕДОС.

 

Реклама. ООО «ПВС», ИНН: 7105502635, Erid: 2VfnxxBYefT

Стать автором BIS Journal

Смотрите также

Подписаться на новости BIS Journal / Медиа группы Авангард

Подписаться
Введите ваш E-mail

Отправляя данную форму вы соглашаетесь с политикой конфиденциальности персональных данных

15.01.2026
У «Сигнала» появится младший брат
15.01.2026
За «серую» продажу SIM-карт — штраф до миллиона рублей
15.01.2026
Члены Scattered Lapsus$ Hunters взломали Discord
14.01.2026
Europol помог испанской полиции в поимке хакеров
14.01.2026
Как «Мир» принимают в мире. Нюансы
14.01.2026
Три недели до 26-го Банковского форума iFin-2026
14.01.2026
DLP «СёрчИнформ КИБ» интегрировалась с архиватором ARZip для контроля передачи защищённых архивов
14.01.2026
ВЭФ предупредил о серьёзных рисках, связанных с deepfake-технологиями
14.01.2026
«Астра» покупает разработчика «МойОфис»?
13.01.2026
Личные аккаунты LLM, находящиеся в тени, повышают риски утечки

Стать автором BIS Journal

Поля, обозначенные звездочкой, обязательные для заполнения!

Отправляя данную форму вы соглашаетесь с политикой конфиденциальности персональных данных