﻿# PVS\-Studio 7\.33: критические ошибки, пользовательские аннотации в C\#, поддержка SN\-DBS и многое другое

Вышел новый релиз PVS\-Studio — 7\.33\. Поддержка SN\-DBS, добавление пользовательских аннотаций в C\# анализатор, новые вебинары, подкасты и много других хороших новостей\! Больше подробностей в этой заметке\.

![1170_7_33_ru/image1.png](https://import.viva64.com/docx/blog/1170_7_33_ru/image1.png)




> Загрузить актуальную версию PVS\\\-Studio можно \[по этой ссылке\]\(https://pvs\-studio\.ru/ru/pvs\-studio/download/\)\\\.



**Фильтрация критических ошибок**

В утилиту [PVS\-Studio\_Cmd\.exe](https://pvs-studio.ru/ru/docs/manual/0035/) была добавлена возможность отображения информации о критических ошибках согласно [ГОСТ Р 71207\-2024](https://pvs-studio.ru/ru/blog/video/11084/) об использовании статического анализа при разработке безопасного программного обеспечения\. Для отображения новой классификации в поле SAST нужно включить настройку "Security Related Issues" в [плагине PVS\-Studio для Visual Studio](https://pvs-studio.ru/ru/docs/manual/6522/)\.

**PVS\-Studio и Unreal Engine**

* Для интеграции анализатора PVS\-Studio с движком Unreal Engine была добавлена поддержка системы распределённой сборки SN\-DBS\. Изменения актуальны для версии Unreal Engine 5\.5\. Подробнее можно прочитать в нашей [документации о использовании PVS\-Studio с Unreal Engine](https://pvs-studio.ru/ru/docs/manual/0043/?sndbs)\.
* В C\+\+ анализаторе было уменьшено количество ложных срабатываний при анализе кода Unreal Engine проектов\. Унифицирована обработка встроенных функций компилятора _\_\_builtin\_expect_ и доработана обработка выражений явных приведений к bool\. Это улучшило анализ _check_\-функций, управляемых макросом _DO\_CHECK_ в проектах Unreal Engine\.

**Потребление памяти**

В C\+\+ анализаторе PVS\-Studio было уменьшено потребление памяти при анализе инстанцирования шаблонов, а также инициализации большого количества глобальных переменных строковыми литералами\.

**Пользовательские аннотации**

В C\# анализаторе PVS\-Studio добавлена возможность проставления пользовательских аннотаций функций и типов в формате JSON\. Ранее подобная функциональность была доступна только в C\+\+ анализаторе PVS\-Studio\. Подробнее об этой функциональности можно прочитать в [нашей документации](https://pvs-studio.ru/ru/docs/manual/6808/)\.

В системе пользовательских аннотаций функций и типов комментарий _//V\_PVS\_ANNOTATIONS $path_ для включения пользовательских аннотаций помечен как устаревший\. В качестве замены предлагается использовать комментарий вида _//V\_PVS\_ANNOTATIONS, language: $lang, path: $path_\.

**PVS\-Studio на Нейтрино**

Плагин PVS\-Studio для Qt Creator портирован на комплект разработчика для [операционной системы "Нейтрино"](https://kpda.ru/products/kpda10964/)\. Из данного комплекта поддержана работа с Qt Creator 6\.0\.2 \(Qt 5\.15\)\.

**Новое поле в отчёте C\+\+ анализатора**

В формат JSON отчёта C\+\+ анализатора PVS\-Studio было добавлено новое поле _analyzedSourceFiles_\. В данное поле записывается дополнительная информация о том, в какой единице трансляции произошло срабатывание диагностического правила\. Это полезно в случаях, когда потенциальная ошибка содержится в заголовочных файлах\.

**Breaking Changes**

Данные изменения ломают обратную совместимость с предыдущими версиями анализатора\. В связи с ними вам может потребоваться изменить способ использования анализатора\.

* Были подняты версии форматов отчётов анализаторов PVS\-Studio _\.json_ и _\.plog_ до версий 3 и 9 соответственно\. Теперь у C\# проектов, имеющих несколько целевых фреймворков \(target framework\), имя фреймворка не приписывается к имени проекта\. 
* Версия JSON\-схемы пользовательских аннотаций функций и типов PVS\-Studio поднята до версии 2\. В схему была добавлена новая сущность _language_\. Она позволяет использовать пользовательские аннотации только в анализаторе для конкретного языка\. Помимо этого, было изменено значение поля _id_\.
* Минимальные поддерживаемые версии IDE JetBrains IDEA, CLion и Rider были подняты до версии 2022\.2\.
* Изменено разрешение путей в плагине PVS\-Studio для сборочной системы Gradle\. Теперь относительные пути из конфигурации разрешаются относительно директории проекта, а не относительно директории _gradle daemon_\.
* Была удалена возможность конвертации отчёта PVS\-Studio при помощи утилит plog\-converter в формат SARIF, используемый в плагине SARIF Viewer для Visual Studio Code\. Конвертация в стандартный отчёт формата SARIF сохранена\.

**Новые диагностические правила**

C, C\+\+:

* [V1113](https://pvs-studio.ru/ru/docs/warnings/v1113/)\. Potential resource leak\. Calling the 'memset' function will change the pointer itself, not the allocated resource\. Check the first and third arguments\.
* [V1114](https://pvs-studio.ru/ru/docs/warnings/v1114/)\. Suspicious use of 'dynamic\_cast' when working with COM interfaces\. Consider using the 'QueryInterface' member function\.
* [V1115](https://pvs-studio.ru/ru/docs/warnings/v1115/)\. Function annotated with the 'pure' attribute has side effects\.

C\#:

* [V3204](https://pvs-studio.ru/ru/docs/warnings/v3204/)\. The expression is always false due to implicit type conversion\. Overflow check is incorrect\.
* [V3205](https://pvs-studio.ru/ru/docs/warnings/v3205/)\. Unity Engine\. Improper creation of 'MonoBehaviour' or 'ScriptableObject' object using the 'new' operator\. Use the special object creation method instead\.
* [V3206](https://pvs-studio.ru/ru/docs/warnings/v3206/)\. Unity Engine\. A direct call to the coroutine\-like method will not start it\. Use the 'StartCoroutine' method instead\.
* [V4006](https://pvs-studio.ru/ru/docs/warnings/v4006/)\. Unity Engine\. Multiple operations between complex and numeric values\. Prioritizing operations between numeric values can optimize execution time\.

Java:

* [V6118](https://pvs-studio.ru/ru/docs/warnings/v6118/)\. The original exception object was swallowed\. Cause of original exception could be lost\.
* [V6119](https://pvs-studio.ru/ru/docs/warnings/v6119/)\. The result of '&' operator is always '0'\.
* [V6120](https://pvs-studio.ru/ru/docs/warnings/v6120/)\. The result of the '&' operator is '0' because one of the operands is '0'\.
* [V6121](https://pvs-studio.ru/ru/docs/warnings/v6121/)\. Return value is not always used\. Consider inspecting the 'foo' method\.
* [V6122](https://pvs-studio.ru/ru/docs/warnings/v6122/)\. The 'Y' \(week year\) pattern is used for date formatting\. Check whether the 'y' \(year\) pattern was intended instead\.

**Статьи**

Для тех, кто пишет на C\+\+:

* [std::array в С\+\+ не медленнее массива в С](https://pvs-studio.ru/ru/blog/posts/cpp/1164/)
* [Путеводитель C\+\+ программиста по неопределённому поведению: часть 4 из 11](https://pvs-studio.ru/ru/blog/posts/cpp/1156/)
* [Путеводитель C\+\+ программиста по неопределённому поведению: часть 5 из 11](https://pvs-studio.ru/ru/blog/posts/cpp/1160/)
* [Путеводитель C\+\+ программиста по неопределённому поведению: часть 6 из 11](https://pvs-studio.ru/ru/blog/posts/cpp/1163/)
* [PPSSPP или всё же psp?](https://pvs-studio.ru/ru/blog/posts/cpp/1167/)
* [Что нового в PVS\-Studio для Unreal Engine?](https://pvs-studio.ru/ru/blog/posts/cpp/1168/)

Для тех, кто пишет на C\#:

* [\.NET Digest \#3](https://pvs-studio.ru/ru/blog/posts/csharp/1158/)
* [Рефакторим легаси при помощи ООП](https://pvs-studio.ru/ru/blog/posts/csharp/1159/)
* [Анализ кода WolvenKit: что нужно знать перед созданием модов для Cyberpunk 2077](https://pvs-studio.ru/ru/blog/posts/csharp/1165/)
* [Исходный код на прощание: разбор ошибок в проектах закрывшейся инди\-студии](https://pvs-studio.ru/ru/blog/posts/csharp/1169/)

Для тех, кто пишет на Java:

* [Изучаем карты с исходным кодом GeoServer](https://pvs-studio.ru/ru/blog/posts/java/1161/)

Статьи общей тематики:

* [Чистый код — дар или проклятие? Акт I\. Конфронтация](https://pvs-studio.ru/ru/blog/posts/1157/)
* [Чистый код — дар или проклятие? Акт II\. Компромисс](https://pvs-studio.ru/ru/blog/posts/1162/)
* [Пользовательские аннотации кода для PVS\-Studio](https://pvs-studio.ru/ru/blog/posts/1166/)

**Вебинары**

Заключительный из пяти вебинаров, посвящённых введённому в апреле этого года стандарту ГОСТ Р 71207\-2024 о разработке безопасного ПО и статическом анализе\. Почему обязательно регулярно запускать анализатор и смотреть на отчёты? Как часто это необходимо делать? Рассмотрим эти и другие требования стандарта для регулярного использования статических анализаторов в процессе разработки безопасного ПО\.

<https://vk.com/video_ext.php?oid=-11805870&id=456239355&hash=93df7f8c6682c516>

А все предыдущие вебинары из этой серии можно посмотреть [по этой ссылке](https://pvs-studio.ru/ru/blog/video/webinars/)\.

**Доклады**

**Семантика для кремниевых мозгов**

В своём новом докладе Юрий Минаев рассказывает о семантике C\+\+ с точки зрения статического анализатора или фронтенда компилятора, как устроена таблица символов, как выглядит внутреннее представление типов и как происходит поиск имён\. 

<https://vk.com/video_ext.php?oid=-11805870&id=456239336&hash=da6445b9cf727b45>

**Разрушители мифов: C\+\+ уже не торт**

Язык программирования С\+\+ существует уже больше 40 лет\. За это время появилась целая куча мифов и небылиц о нём\. Мы будем вместе опровергать или подтверждать их\. Действительно ли С\+\+ непрост для новичков? С\+\+ устарел и больше никому не нужен? Эти и другие вопросы в докладе Филиппа Хандельянца\.

<https://vk.com/video_ext.php?oid=-11805870&id=456239333&hash=5da3eb7b8d345890>

**Подкасты**

**Как узнать, что код "с душком"**

Зачем надевать на разработчика ошейник и бить его по щекам? Сколько человек нужно, чтобы определиться, как правильно писать код? Как можно скрутить "пробег" у проекта? Как сделать GitHub лучше? Об этом и многом другом в выпуске подкаста "Скрамное ИТ" с участием Филиппа Хандельянца\.

<https://vk.com/video_ext.php?oid=-11805870&id=456239334&hash=8e31e00a20ca5b1e>

**Статический анализ кода / Виды анализа и диагностики / Поиск кадров в регионах**

О том, как начиналась разработка статического анализатора PVS\-Studio и как работает наша команда сегодня Юрий Минаев и Андрей Карпов рассказали в подкасте "Битовые Маски"\.

<https://vk.com/video_ext.php?oid=-11805870&id=456239347&hash=9fa01fdd6bd7bb4a>

**Как айтишнику развить бизнес**

Андрей Карпов побывал на подкасте "Алиса и тестирование", где участники поговорили о разработке, методах выявления ошибок в коде на ранних этапах, важности использования статического анализа для повышения качества ПО и внедрении современных методологий, таких как TDD и код\-ревью, в повседневную работу\.

<https://vk.com/video_ext.php?oid=-11805870&id=456239368&hash=6d2da45afe5774a4>

**Видео**

В новых видео туториалах рассказали и показали, как использовать PVS\-Studio в Visual Studio и SonarQube\.

<https://www.youtube.com/watch?v=CZUU1SzKSco>

<https://www.youtube.com/watch?v=nnoSfQGskgM>


> Хотите проверить свой проект с помощью PVS\\\-Studio? Начните \[с этой страницы\]\(https://pvs\-studio\.ru/ru/pvs\-studio/try\-free/\)\\\.



Если вы хотите получать новости о новых релизах, подпишитесь на рассылку от компании PVS\-Studio [по этой ссылке](https://pvs-studio.ru/ru/subscribe/)\.