Вышел новый релиз PVS-Studio — 7.32. Оптимизация анализа на C++, новые плагины и функциональность, и ещё много других обновлений! Больше подробностей в этой заметке.
Загрузить актуальную версию PVS-Studio можно здесь.
Оптимизация анализа инстанцирования шаблонов
В новом релизе было оптимизировано потребление памяти С++ анализатора при анализе инстанцирования шаблонов.
Сохранена возможность отключения анализа их инстанирования:
с помощью флага настройки - DisableTemplateInstantiationCpp в плагине PVS-Studio для Visual Studio;
с помощью настройки //V_DISABLE_TEMPLATE_INSTANTIATION в файлах конфигурации pvsconfig в случае, если потребление памяти анализатором всё ещё остаётся избыточно высоким.
Изменение приоритета для флага sourceTreeRoot
Для утилиты PVS-Studio_Cmd.exe изменён приоритет флага --sourceTreeRoot, который задаёт корневую часть пути для конвертации путей из абсолютных в относительные.
Теперь этот флаг имеет приоритет над настройками:
UseSolutionDirAsSourceTreeRoot в конфигурационном файле Settings.xml;
//V_SOLUTION_DIR_AS_SOURCE_TREE_ROOT в файлах конфигурации диагностик pvsconfig.
Новая функциональность анализа для сборочной системы MSBuild
При анализе проектов для сборочной системы MSBuild добавлена возможность исключения из анализа проектов с помощью файлов конфигурации анализатора .pvsconfig.
Эта возможность реализуется включением флага V_EXCLUDE_PROJECT в файл конфигурации диагностик pvsconfig.
Использование pvsconfig в JetBrains CLion
Для плагина PVS-Studio для IDE JetBrains CLion добавлена возможность использования файлов конфигурации диагностик pvsconfig.
Подробнее про работу PVS-Studio в JetBrains Rider и CLion можно узнать в документации.
"Новый" плагин PVS-Studio в SonarQube
Начиная с версии SonarQube 10.1, в связи с изменениями в API платформы был разработан новый плагин для интеграции анализатора PVS-Studio в платформу SonarQube.
Теперь для использования PVS-Studio в SonarQube необходимо использовать новую версию плагина. Версия плагина PVS-Studio для более ранних версий SonarQube продолжает поддерживаться и получать обновления параллельно с новым плагином.
Подробнее про использование PVS-Studio в SonarQube можно узнать в документации.
Изменение синтаксиса пользовательских аннотаций
Изменён синтаксис пользовательских аннотаций в формате JSON для С++ анализатора PVS-Studio:
использование атрибутов nullable_initialized и nullable_uninitialized устарело;
вместо них введены атрибуты возвращаемого объекта not_null, maybe_null, always_null.
Поддержка разметки помеченных данных
В C++ анализаторе PVS-Studio добавлена возможность разметки источников и приёмников при анализе помеченных данных (taint-анализ).
Она реализована в механизме пользовательский аннотаций в формате JSON.
Поддержка новых сборочных систем для C++ анализатора
Добавлена поддержка интеграции анализатора PVS-Studio в проекты, использующие сборочные системы Bazel и Scons.
Поддержка новой версии Qt Сreator
Плагин PVS-Studio стал доступен для Qt Creator версий 14.x.
Прекращена поддержка плагина для версий Qt Creator 8.x. Мы стараемся обеспечивать обратную совместимость по поддержке последних версий плагинов для всех версий Qt Creator за два года с момента каждого релиза.
Анонс нового вебинара
Мы анонсируем продолжение марафона вебинаров про "ГОСТ Р 71207–2024 — Статический анализ программного обеспечения". Темой в этот раз являются "Технологии анализа кода".
Это четвёртый из пяти вебинаров, посвящённых введённому в 2024 году стандарту по методологии статического анализа кода. Чтобы обеспечить поиск критических ошибок на высоком уровне, стандарт описывает методы анализа, которые должны быть реализованы в статических анализаторах.
Посмотрим на практических примерах, как работают технологии статического анализа и какие ошибки можно с их помощью выявлять.
Вебинар пройдёт 23 августа в 14:00 (по Москве).
Зарегистрироваться можно здесь.
Предыдущие вебинары по тематике ГОСТ доступны здесь
Новые диагностические правила
C, С++
V1111. The index was used without check after it was checked in previous lines.
V1112. Comparing expressions with different signedness can lead to unexpected results.
V2021. Using assertions may cause the abnormal program termination in undesirable contexts.
C#
V3201. Return value is not always used. Consider inspecting the 'foo' method.
V3202. Unreachable code detected. The 'case' value is out of the range of the match expression.
V3203. Method parameter is not used.
Java
V6115. Not all Closeable members are released inside the 'close' method.
V6116. The class does not implement the Closeable interface, but it contains the 'close' method that releases resources.
V6117. Possible overflow. The expression will be evaluated before casting. Consider casting one of the operands instead.
Статьи
Для тех, кто пишет на C++:
Насекомое 13 лет сидит в вашем компиляторе и не собирается оттуда вылезать
Путеводитель C++ программиста по неопределённому поведению: часть 2 из 11
Путеводитель C++ программиста по неопределённому поведению: часть 3 из 11
12 мгновений опечаток и копипаста, или почему сбоит AI: проверяем код OpenVINO
Для тех, кто пишет на C#:
Для тех, кто пишет на Java:
Статьи общей тематики:
Тотемные утки и шаманские бубны: есть ли у разработчиков свои ритуалы и приметы?
Как научить кота программировать. Необычные подходы к изучению нового
Доклады
Ошибки в коде: ожидания и реальность
Используя статический анализатор кода, пользователь может находить в коде вовсе не те ошибки, которые ожидал. Это не хорошо и не плохо, а интересная тема для обсуждения. Почему синтетические тесты врут, и почему их сложно составлять. Ложные ожидания при разработке и использовании статических анализаторов кода. Интересные закономерности в обнаруживаемых ошибках.
Посмотреть можно тут:
Хотите проверить свой проект с помощью PVS-Studio? Начните с этой страницы.
Если вы хотите получать новости о новых релизах, можете подписаться на рассылку от команды PVS-Studio по ссылке.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Gleb Aslamov. PVS-Studio 7.32: enhanced analysis, new plugins and more.