﻿# PVS\-Studio 7\.19: что новенького?

Недавно вышла новая версия PVS\-Studio – 7\.19\. В этой заметке расскажем, что нового появилось в анализаторе, какие разделы документации мы улучшили, а также о том, что почитать, посмотреть и\.\.\. во что поиграть\.

![0958_Release_7_19_ru/image1.png](https://import.viva64.com/docx/blog/0958_Release_7_19_ru/image1.png)

## Улучшения

### Поддержка Unreal Engine 5

С помощью PVS\-Studio можно анализировать проекты на основе Unreal Engine 5\. В целом анализ выполняется так же, как и для Unreal Engine 4\. Разница описана в [документации](https://pvs-studio.ru/ru/docs/manual/0043/)\.

**Баг в Unreal Engine 5: Unable to find PVS\-Studio**

В Unreal Engine 5 есть баг, из\-за которого Unreal Build Tool не находит PVS\-Studio по стандартному пути установки\. Pull request для исправления этой проблемы уже сделан, фикс войдёт в одну из следующих версий движка\.

Временное решение проблемы описано в [документации](https://pvs-studio.ru/ru/docs/manual/0043/#ID6359BE4B0E)\.

### Работа с компиляторами 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 можно найти [здесь](https://pvs-studio.ru/ru/docs/manual/0050/)\.

### Документация

#### Отчёты анализатора и утилиты конвертации

Результаты анализа PVS\-Studio с помощью специальных утилит \(PlogConverter\.exe, plog\-converter\) можно конвертировать в различные форматы\. В одном документе мы описали:

* форматы, в которые можно сконвертировать отчёты, и назначение каждого из них;
* утилиты конвертации отчётов и флаги запуска;
* примеры команд конвертации\.

Найти эту информацию теперь можно [здесь](https://pvs-studio.ru/ru/docs/manual/0038/)\.

#### Unreal Engine

Мы обновили документацию по использованию Unreal Engine и PVS\-Studio\. В ней описано:

* как проверять проекты из IDE и из командной строки;
* как внедрить анализатор в проект, чтобы не видеть предупреждений на legacy\-код;
* как исключать файлы и директории из анализа;
* особенности использования анализатора с разными версиями движка\.

Документация доступна по [ссылке](https://pvs-studio.ru/ru/docs/manual/0043/)\.

## Новые диагностики

### C, C\+\+

* [V834](https://pvs-studio.ru/ru/docs/warnings/v834/)\. Incorrect type of a loop variable\. This leads to the variable binding to a temporary object instead of a range element\.
* [V835](https://pvs-studio.ru/ru/docs/warnings/v835/)\. Passing cheap\-to\-copy argument by reference may lead to decreased performance\.
* [V1083](https://pvs-studio.ru/ru/docs/warnings/v1083/)\. Signed integer overflow in arithmetic expression\. This leads to undefined behavior\.
* [V1084](https://pvs-studio.ru/ru/docs/warnings/v1084/)\. The expression is always true/false\. The value is out of range of enum values\.
* [V1085](https://pvs-studio.ru/ru/docs/warnings/v1085/)\. Negative value is implicitly converted to unsigned integer type in arithmetic expression\.

### C\#

* [V3175](https://pvs-studio.ru/ru/docs/warnings/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](https://pvs-studio.ru/ru/docs/warnings/v3176/)\. The '&'\= or '\|\=' operator is redundant because the right operand is always true/false\.
* [V5622](https://pvs-studio.ru/ru/docs/warnings/v5622/)\. OWASP\. Possible XPath injection\. Potentially tainted data is used in the XPath expression\.
* [V5623](https://pvs-studio.ru/ru/docs/warnings/v5623/)\. OWASP\. Possible open redirect vulnerability\. Potentially tainted data is used in the URL\.

## Посмотреть, почитать и\.\.\. поиграть

### Посмотреть

**Heisenbug 2021: о безопасности**

Прошлой осенью мы были на конференции Heisenbug 2021 Moscow, где разговаривали о безопасности, SAST\-решениях, taint\-анализе и не только\.

Недавно на YouTube выложили записи докладов с конференции\. Вот ссылки на те, где мы принимали участие:

* [SAST снаружи и изнутри](https://youtu.be/cRqGBej9QFA)
* [Обсуждаем вопросы безопасности](https://youtu.be/lQUNR7ZPrE8)

**Life EXE: чистим исходный код проекта на Unreal Engine 5 с помощью PVS\-Studio**

Автор канала [Life EXE](https://www.youtube.com/c/LifeEXECode/featured) рассказывает про работу с проектами на Unreal Engine\. В одном из последних видео он на примере PVS\-Studio показал, как статический анализ может быть полезен для проектов на основе Unreal Engine\. 

Посмотреть видео можно [здесь](https://youtu.be/ZDR8sP9ei2k)\.

### Почитать

**Улучшения PVS\-Studio**

Мы не только улучшаем анализатор, но и рассказываем, что конкретно, как и зачем делаем\. Почитать об этом можно в статьях:

* [Эволюция PVS\-Studio: анализ потока данных для связанных переменных](https://pvs-studio.ru/ru/blog/posts/csharp/0942/)
* [Нереальный baselining или доработки PVS\-Studio для Unreal Engine проектов](https://pvs-studio.ru/ru/blog/posts/cpp/0941/)
* [Новый механизм мониторинга компиляции в PVS\-Studio для Windows](https://pvs-studio.ru/ru/blog/posts/cpp/0954/)

**Проверка кода проектов**

Продолжаем проверять качество кода Open Source проектов\. Почитать о том, какие интересные ошибки удалось найти, можно в этих заметках:

* [Насколько хорошо защищены ваши пароли? Проверка проекта Bitwarden](https://pvs-studio.ru/ru/blog/posts/csharp/0947/)
* [Зачем разработчикам игр на Unity использовать статический анализ?](https://pvs-studio.ru/ru/blog/posts/csharp/0945/)
* [Как PVS\-Studio защищает от поспешных правок кода, пример N5](https://pvs-studio.ru/ru/blog/posts/cpp/0936/)
* [Зачем нужен статический анализ? Разбираем на примере ошибки из Akka\.NET](https://pvs-studio.ru/ru/blog/posts/csharp/0940/)

### Поиграть

Мы сделали игру, в которой можно проверить свою внимательность и поискать ошибки в коде\. Пока доступна версия с ошибками в коде только на C\+\+\. Интересно поиграть во что\-то подобное для C\#? Пишите в комментариях\. :\)

Саму игру найти можно [здесь](https://quiz.pvs-studio.com/ru/cpp/)\.

## Попробовать PVS\-Studio 7\.19

Загрузить последнюю версию анализатора можно [здесь](https://pvs-studio.ru/ru/pvs-studio/download/)\. Если у вас нет лицензионного ключа, не забудьте [запросить триал](https://pvs-studio.ru/ru/pvs-studio/download/)\.