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

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

19.12.2025
НСПК — о едином пространстве для проведения транзакций
19.12.2025
Пентагон видит в ISACA глобальный орган по контролю за ИБ-стандартами
19.12.2025
«Слишком жёсткие правила могут замедлить темпы внедрения ИИ»
19.12.2025
В Amazon предупреждают: опасайтесь российских хакеров
19.12.2025
«Здесь востребованы люди, которые умеют совмещать системное мышление с прикладной инженерией»
19.12.2025
NCSC стремится внедрить передовые методы защиты в цепочки поставок
19.12.2025
Рекордные DDoS-атаки инициированы теми же, кто год назад атаковал бизнес в рекламных целях
19.12.2025
Исследование «Телеком биржи»: спрос на услуги резервного копирования вырос вдвое
19.12.2025
Cloud.ru запустил новый сервис для визуализации и анализа данных в облаке
18.12.2025
Эксперт: Продление жизни карт «Мир» грозит ростом скамерской активности

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

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

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