PVS-Studio 7.26: запуск анализа из VS Code и Qt Creator, интеграция с DefectDojo и не только
Вышел новый релиз 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.
Более подробная информация собрана в документации:
Интеграция с 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++
Больше статей вы найдёте в нашем блоге.
Записи докладов
Наша команда активно участвует в конференциях и митапах. Ниже перечислены записи некоторых докладов, выложенных в открытый доступ в последнее время.
- Межмодульный анализ C++ проектов
- Прокачиваем LLDB, или LLDB formatters
- Уязвимость регулярных выражений: теория и практика ReDoS-атак
- Восстание машин: ChatGPT vs статический анализатор
- MskDotNet Meetup #54
**
Хотите проверить свой проект с помощью PVS-Studio? Начните с этой страницы.
0