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

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

Загрузить актуальную версию PVS-Studio можно по этой ссылке.

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

В утилиту PVS-Studio_Cmd.exe была добавлена возможность отображения информации о критических ошибках согласно ГОСТ Р 71207-2024 об использовании статического анализа при разработке безопасного программного обеспечения. Для отображения новой классификации в поле SAST нужно включить настройку «Security Related Issues» в плагине PVS-Studio для Visual Studio.

PVS-Studio и Unreal Engine

Для интеграции анализатора PVS-Studio с движком Unreal Engine была добавлена поддержка системы распределённой сборки SN-DBS. Изменения актуальны для версии Unreal Engine 5.5. Подробнее можно прочитать в нашей документации о использовании PVS-Studio с Unreal Engine.

В C++ анализаторе было уменьшено количество ложных срабатываний при анализе кода Unreal Engine проектов. Унифицирована обработка встроенных функций компилятора __builtin_expect и доработана обработка выражений явных приведений к bool. Это улучшило анализ check-функций, управляемых макросом DO_CHECK в проектах Unreal Engine.

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

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

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

В C# анализаторе PVS-Studio добавлена возможность проставления пользовательских аннотаций функций и типов в формате JSON. Ранее подобная функциональность была доступна только в C++ анализаторе PVS-Studio. Подробнее об этой функциональности можно прочитать в нашей документации.

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

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

Плагин PVS-Studio для Qt Creator портирован на комплект разработчика для операционной системы «Нейтрино». Из данного комплекта поддержана работа с 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. Potential resource leak. Calling the ‘memset’ function will change the pointer itself, not the allocated resource. Check the first and third arguments.

V1114. Suspicious use of ‘dynamic_cast’ when working with COM interfaces. Consider using the ‘QueryInterface’ member function.

V1115. Function annotated with the ‘pure’ attribute has side effects.

C#:

V3204. The expression is always false due to implicit type conversion. Overflow check is incorrect.

V3205. Unity Engine. Improper creation of ‘MonoBehaviour’ or ‘ScriptableObject’ object using the ‘new’ operator. Use the special object creation method instead.

V3206. Unity Engine. A direct call to the coroutine-like method will not start it. Use the ‘StartCoroutine’ method instead.

V4006. Unity Engine. Multiple operations between complex and numeric values. Prioritizing operations between numeric values can optimize execution time.

Java:

V6118. The original exception object was swallowed. Cause of original exception could be lost.

V6119. The result of ‘&’ operator is always ‘0’.

V6120. The result of the ‘&’ operator is ‘0’ because one of the operands is ‘0’.

V6121. Return value is not always used. Consider inspecting the ‘foo’ method.

V6122. The ‘Y’ (week year) pattern is used for date formatting. Check whether the ‘y’ (year) pattern was intended instead.

Статьи

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

std::array в С++ не медленнее массива в С

Путеводитель C++ программиста по неопределённому поведению: часть 4 из 11

Путеводитель C++ программиста по неопределённому поведению: часть 5 из 11

Путеводитель C++ программиста по неопределённому поведению: часть 6 из 11

PPSSPP или всё же psp?

Что нового в PVS-Studio для Unreal Engine?

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

.NET Digest #3

Рефакторим легаси при помощи ООП

Анализ кода WolvenKit: что нужно знать перед созданием модов для Cyberpunk 2077

Исходный код на прощание: разбор ошибок в проектах закрывшейся инди-студии

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

Изучаем карты с исходным кодом GeoServer

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

Чистый код — дар или проклятие? Акт I. Конфронтация

Чистый код — дар или проклятие? Акт II. Компромисс

Пользовательские аннотации кода для PVS-Studio

Вебинары

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

А все предыдущие вебинары из этой серии можно посмотреть по этой ссылке.

Доклады

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

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

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

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

Подкасты

Как узнать, что код «с душком»

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

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

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

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

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

Видео

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

Хотите проверить свой проект с помощью PVS-Studio? Начните с этой страницы.

Если вы хотите получать новости о новых релизах, подпишитесь на рассылку от компании PVS-Studio по этой ссылке.

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Valerii Filatov. PVS-Studio 7.33: C# user annotations, SN-DBS support, and more.

Источник: habr.com

0 0 голоса
Рейтинг новости
7657
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии