22 декабря 2025 / время чтения: 3 мин. / всего просмотров: 3

Статический анализатор 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

Похожие статьи

Статья

Гонка за суперинтеллектом на распутье: инициативупо контролю над LLM встретили с подозрительностью и скепсисом

Статья

Отягощённое интеллектом. Сложности испытательной лаборатории при оценке защищённости программного обеспечения, разработанного с использованием ИИ

Статья

Атаки на извлечение обучающих данных. Почему нейросеть может «проболтаться» о том, чему её учили

Статья

ИИ-безопасность становится реальностью. Российский бизнес на пороге новых киберрисков

  1. 05 «Доверие нельзя сертифицировать — его можно только построить». 11 вопросов после 11-го Certification Day
  2. 06 Как финансовым организациям защищаться от фрода с помощью технологии фингерпринта
  3. 07 ИИ против ИИ. Как искусственный интеллект меняет правила игры в кибербезопасности
  4. 08 Инциденты безопасности ИИ. Новые виды угроз, которые уже отслеживают в российских компаниях
  5. 09 Лучшие практики по организации работы SOC и VOC
  6. 10 Не вместо, а вместе. Как ИИ-платформы расширяют возможности банковского SOC
ИИ-ассистент BISонлайн
Привет! Я помогу разобраться в материалах журнала. Хотите, перескажу текущую статью за 20 секунд?
Рекомендую прочитать
«Как построить SOC в 2026»