Недавно вышла новая версия PVS-Studio – 7.19. В этой заметке расскажем, что нового появилось в анализаторе, какие разделы документации мы улучшили; кроме того — что почитать, посмотреть и… во что поиграть.
Улучшения
Поддержка Unreal Engine 5
С помощью PVS-Studio можно анализировать проекты на основе Unreal Engine 5. В целом анализ выполняется так же, как и для Unreal Engine 4. Разница описана в документации.
Баг в Unreal Engine 5: Unable to find PVS-Studio
В Unreal Engine 5 есть баг, из-за которого Unreal Build Tool не находит PVS-Studio по стандартному пути установки. Pull request для исправления этой проблемы уже сделан, фикс войдёт в одну из следующих версий движка.
Временное решение проблемы описано в документации.
Работа с компиляторами QNX
В C++ анализаторе улучшили работу с компиляторами QNX:
- лучше определяем целевую платформу компиляторов QNX Momentics QCC. Это позволило сократить количество ложных срабатываний при анализе кода под QNX;
- поддержали последние версии компилятора QNX.
Плагин PVS-Studio для SonarQube
Плагин PVS-Studio для SonarQube теперь поддерживает JSON отчёты. Так как отчёты PVS-Studio в формате JSON доступны на всех платформах, это упрощает кроссплатформенные сценарии работы.
Утилита оповещения разработчиков (blame-notifier)
Утилита blame-notifier используется для оповещения разработчиков и менеджеров об ошибках в коде, которые нашёл PVS-Studio. Это реализовано через рассылку писем с предупреждениями анализатора.
Теперь к таким письмам можно прикреплять файлы (например, полный отчёт анализатора), а также изменять тему письма.
Документацию по утилите blame-notifier можно найти здесь.
Документация
Отчёты анализатора и утилиты конвертации
Результаты анализа PVS-Studio с помощью специальных утилит (PlogConverter.exe, plog-converter) можно конвертировать в различные форматы. В одном документе мы описали:
- форматы, в которые можно сконвертировать отчёты, и назначение каждого из них;
- утилиты конвертации отчётов и флаги запуска;
- примеры команд конвертации.
Найти эту информацию теперь можно здесь.
Unreal Engine
Мы обновили документацию по использованию Unreal Engine и PVS-Studio. В ней описано:
- как проверять проекты из IDE и из командной строки;
- как внедрить анализатор в проект, чтобы не видеть предупреждений на legacy-код;
- как исключать файлы и директории из анализа;
- особенности использования анализатора с разными версиями движка.
Документация доступна по ссылке.
Новые диагностики
C, C++
- V834. Incorrect type of a loop variable. This leads to the variable binding to a temporary object instead of a range element.
- V835. Passing cheap-to-copy argument by reference may lead to decreased performance.
- V1083. Signed integer overflow in arithmetic expression. This leads to undefined behavior.
- V1084. The expression is always true/false. The value is out of range of enum values.
- V1085. Negative value is implicitly converted to unsigned integer type in arithmetic expression.
C#
- V3175. Locking operations must be performed on the same thread. Using 'await' in a critical section may lead to a lock being released on a different thread.
- V3176. The '&'= or '|=' operator is redundant because the right operand is always true/false.
- V5622. OWASP. Possible XPath injection. Potentially tainted data is used in the XPath expression.
- V5623. OWASP. Possible open redirect vulnerability. Potentially tainted data is used in the URL.
Посмотреть, почитать и… поиграть
Посмотреть
Heisenbug 2021: о безопасности
Прошлой осенью мы были на конференции Heisenbug 2021 Moscow, где разговаривали о безопасности, SAST-решениях, taint-анализе и не только.
Недавно на YouTube выложили записи докладов с конференции. Вот ссылки на те, где мы принимали участие:
Life EXE: чистим исходный код проекта на Unreal Engine 5 с помощью PVS-Studio
Автор канала Life EXE рассказывает про работу с проектами на Unreal Engine. В одном из последних видео он на примере PVS-Studio показал, как статический анализ может быть полезен для проектов на основе Unreal Engine.
Посмотреть видео можно здесь.
Почитать
Улучшения PVS-Studio
Мы не только улучшаем анализатор, но и рассказываем, что конкретно, как и зачем делаем. Почитать об этом можно в статьях:
- Эволюция PVS-Studio: анализ потока данных для связанных переменных
- Нереальный baselining или доработки PVS-Studio для Unreal Engine проектов
- Новый механизм мониторинга компиляции в PVS-Studio для Windows
Проверка кода проектов
Продолжаем проверять качество кода Open Source проектов. Почитать о том, какие интересные ошибки удалось найти, можно в этих заметках:
- Насколько хорошо защищены ваши пароли? Проверка проекта Bitwarden
- Зачем разработчикам игр на Unity использовать статический анализ?
- Как PVS-Studio защищает от поспешных правок кода, пример N5
- Зачем нужен статический анализ? Разбираем на примере ошибки из Akka.NET
Поиграть
Мы сделали игру, в которой можно проверить свою внимательность и поискать ошибки в коде. Пока доступна версия с ошибками в коде только на C++. Интересно поиграть во что-то подобное для C#? Пишите в комментариях. :)
Саму игру найти можно здесь.
Попробовать PVS-Studio 7.19
Загрузить последнюю версию анализатора можно здесь. Если у вас нет лицензионного ключа, не забудьте запросить триал.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Sergey Vasiliev. PVS-Studio 7.19: what's new?.