Вышел новый релиз PVS-Studio — 7.26. Запускайте анализ через плагины для VS Code и Qt Creator. Загружайте результаты анализа в DefectDojo. Больше подробностей об этих и прочих улучшениях — в этой заметке.
Загрузить актуальную версию PVS-Studio можно здесь.
Visual Studio Code и Qt Creator: запуск анализа и подавление предупреждений
В плагинах PVS-Studio для Visual Studio Code и Qt Creator появилась возможность анализа C и C++ проектов. Кроме того, теперь плагины поддерживают функцию массового подавления предупреждений (с помощью suppress-файлов). Это позволит скрыть предупреждения анализатора на legacy-код и работать только с новыми предупреждениями, что упростит внедрение анализатора в проект. Подробнее об этом читайте в статье "Как внедрить статический анализатор кода в legacy проект и не демотивировать команду".
Запускать анализ можно на проектах, использующих следующие сборочные системы:
Visual Studio Code: CMake;
Qt Creator: CMake, QMake, Qbs.
Более подробная информация собрана в документации:
PVS-Studio для Visual Studio Code.
PVS-Studio для Qt Creator.
Интеграция с DefectDojo
Результаты анализа PVS-Studio теперь можно загружать в DefectDojo — DevSecOps-платформу для работы с инструментами обеспечения безопасности. Подробности интеграции описаны в документации.
Поддержка проектов на основе JDK 20
Java анализатор теперь работает с проектами, использующими JDK 20 и Java 20, сохраняя обратную совместимость с предыдущими версиями.
Новые возможности аннотации функций C и C++ кода
Аннотации функций дают PVS-Studio дополнительную информацию, которую он может использовать при анализе.
В C++ анализаторе доработан механизм пользовательского аннотирования функций. Теперь можно писать аннотации для функций на любом уровне вложенности. Кроме того, при аннотировании допускается использование имени функции без указания класса и пространства имён.
Инструкция по написанию аннотаций доступна здесь.
Новые диагностики
С++
V838. Temporary object is constructed during lookup in ordered associative container. Consider using a container with heterogeneous lookup to avoid construction of temporary objects.
V1100. Unreal Engine. Declaring a pointer to a type derived from 'UObject' in a class that is not derived from 'UObject' is dangerous. The pointer may start pointing to an invalid object after garbage collection.
V1101. Changing the default value of a virtual function parameter in a derived class may result in unexpected behavior.
C#
V3191. Iteration through collection makes no sense because it is always empty.
V4002. Unity Engine. Avoid storing consecutive concatenations inside a single string in performance-sensitive context. Consider using StringBuilder to improve performance.
V4003. Unity Engine. Avoid capturing variable in performance-sensitive context. This can lead to decreased performance.
Статьи
Для тех, кто пишет на C#
Всегда ли в C# есть упаковка при конкатенации со строкой и интерполяции?
Ryujinx: повторная проверка эмулятора Nintendo Switch с помощью PVS-Studio
Изучаем подозрительные места в коде AWS SDK для .NET
Обзор Top-3 Open Source игр на C# и ошибок в их коде
Для тех, кто пишет на C++
Герои Кода и Магии: анализ игрового движка VCMI
Больше статей вы найдёте в нашем блоге.
Записи докладов
Наша команда активно участвует в конференциях и митапах. Ниже перечислены записи некоторых докладов, выложенных в открытый доступ в последнее время.
Межмодульный анализ C++ проектов
Прокачиваем LLDB, или LLDB formatters
Уязвимость регулярных выражений: теория и практика ReDoS-атак
Восстание машин: ChatGPT vs статический анализатор
MskDotNet Meetup #54
**
Хотите проверить свой проект с помощью PVS-Studio? Начните с этой страницы.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Sergey Vasiliev. PVS-Studio 7.26: running analysis in VS Code and Qt Creator, integration with DefectDojo, and more.
Источник новости: habr.com