﻿# PVS\-Studio 7\.20: Unreal Engine, SAST, SCA

В этом пресс\-релизе пробуем новый формат: основная информация кратко изложена в одном разделе\. Если интересны детали, есть разделы с более подробным описанием\. Выбирайте то, что вам ближе\.

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

## Кратко

**Security**\. Покрыли все категории из OWASP Top 10 2021: на каждую есть минимум по одной диагностике\. В C\# проектах теперь можно искать зависимости с уязвимостями – реализовали [SCA](https://pvs-studio.ru/ru/docs/warnings/v5625/) \(Software Composition Analysis\)\.

**Unreal Engine**\. В Unreal Engine 5\.0\.3 исправили баг с поиском PVS\-Studio: теперь анализ работает без workaround'ов\. Ещё мы улучшили анализ UE\-проектов: меньше ложных срабатываний, больше хороших\.

**Кроссплатформенный анализ C и C\+\+ проектов**\. Доработали утилиты pvs\-studio\-analyzer и CompilerCommandsAnalyzer: пользоваться ими стало удобнее\. Сами утилиты описали в [документе](https://pvs-studio.ru/ru/docs/manual/6615/)\.

**Интерактив**:

* сделали игру на поиск ошибок в C\# коде: [поиграть](https://quiz.pvs-studio.com/ru/csharp/);
* составили развлекательный тест "Кто ты в мире C\+\+": [узнать](https://pvs-studio.ru/ru/blog/quest/who_you_are_in_cpp/)\.

Получить триал и загрузить PVS\-Studio 7\.20 можно [здесь](https://pvs-studio.ru/ru/pvs-studio/try-free/)\. Чтобы не пропускать пресс\-релизы и самые интересные статьи, [подписывайтесь](https://pvs-studio.ru/ru/subscribe/) на рассылки\.

## Подробно

### Улучшения анализатора

**OWASP Top 10 2021: ищите дефекты безопасности из всех категорий**

В релизе 7\.20 мы покрыли последнюю категорию из OWASP Top 10 2021 – A06\. Теперь с помощью PVS\-Studio можно искать дефекты безопасности из всех категорий, перечисленных в OWASP Top 10\. 

На [специальной странице](https://pvs-studio.ru/ru/pvs-studio/sast/owasptopten/) можно посмотреть, какие диагностические правила ищут проблемы из каждой категории\.

**SCA: проверяйте зависимости C\# проектов на уязвимости**

Приложение может быть уязвимо, если использует зависимости c уязвимостями\. Чтобы искать "опасные" зависимости, при разработке используют SCA\-решения \(Software Composition Analysis\)\.

PVS\-Studio для C\# теперь тоже ищет подобные дефекты безопасности\. Анализатор проверяет, из каких компонентов состоит приложение: если находит зависимость с уязвимостью – выдаёт предупреждение\.

Подробности описали в документации к диагностическому правилу [V5625](https://pvs-studio.ru/ru/docs/warnings/v5625/)\.

**Unreal Engine: больше хороших срабатываний, меньше ложных**

В Unreal Engine 5\.0\.3 исправили баг с поиском PVS\-Studio\. Теперь анализировать UE 5 проекты можно без workaround'ов\.

Кроме того, PVS\-Studio теперь лучше понимает код Unreal Engine проектов\. Анализатор выдаёт меньше ложных предупреждений и больше знает о типах, специфичных для движка\. Например, об аналогах контейнеров из стандартной библиотеки C\+\+\.

[Документация](https://pvs-studio.ru/ru/docs/manual/0043/) об анализе Unreal Engine проектов\.

**Кроссплатформенный анализ C и C\+\+ проектов: улучшения утилит, новая документации**

Мы улучшили утилиты кроссплатформенного анализа C и C\+\+ проектов: pvs\-studio\-analyzer и CompilerCommandsAnalyzer\. Например, теперь они лучше определяют тип компилятора, который используется в проекте\. Если определить его всё же не удалось, можно задать тип вручную \(см\. флаг '\-\-compiler'\)\.

Сценарии использования, флаги запуска и коды возврата описали в [новом разделе документации](https://pvs-studio.ru/ru/docs/manual/6615/)\.

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

C, C\+\+:

* [V1086](https://pvs-studio.ru/ru/docs/warnings/v1086/)\. Call of the 'Foo' function will lead to buffer underflow\.
* [V1087](https://pvs-studio.ru/ru/docs/warnings/v1087/)\. Upper bound of case range is less than its lower bound\. This case may be unreachable\.
* [V1088](https://pvs-studio.ru/ru/docs/warnings/v1088/)\. No objects are passed to the 'std::scoped\_lock' constructor\. No locking will be performed\. This can cause concurrency issues\.
* [V1089](https://pvs-studio.ru/ru/docs/warnings/v1089/)\. Waiting on condition variable without predicate\. A thread can wait indefinitely or experience a spurious wake up\.

C\#:

* [V3177](https://pvs-studio.ru/ru/docs/warnings/v3177/)\. Logical literal belongs to second operator with a higher priority\. It is possible literal was intended to belong to '??' operator instead\.
* [V5624](https://pvs-studio.ru/ru/docs/warnings/v5624/)\. OWASP\. Use of potentially tainted data in configuration may lead to security issues\.
* [V5625](https://pvs-studio.ru/ru/docs/warnings/v5625/)\. OWASP\. Referenced package contains vulnerability\.

### Разное

**Рассылки пресс\-релизов и лучших статей**\. [Подпишитесь](https://pvs-studio.ru/ru/subscribe/), чтобы не пропускать новые статьи и пресс\-релизы\. Выборка статей приходит раз в месяц, информация о релизах – раз в два\.

Историю о создании рассылок рассказали в отдельной [статье](https://pvs-studio.ru/ru/blog/posts/0979/)\.

**Игра: найди ошибку в коде на C\#**\. Теперь игра на внимательность доступна и для C\# \(раньше была только для C\+\+\)\. 

Суть игры: 

* есть 10 фрагментов кода\. Все – из реальных проектов;
* каждый фрагмент содержит ошибку\. Есть 60 секунд, чтобы найти её;
* набираете очки, в конце получаете результат\.

![0980_Release_7_20_ru/image2.png](https://import.viva64.com/docx/blog/0980_Release_7_20_ru/image2.png)

Поиграть: [версия для C\#](https://quiz.pvs-studio.com/ru/csharp/), [версия для C\+\+](https://quiz.pvs-studio.com/ru/cpp/)\. 

Делитесь с коллегами, чтобы выяснить, кто самый внимательный баг\-хантер\. ;\)

**Тест: кто ты из мира C\+\+**\. Развлекательный тест, который подскажет, кто вы в мире C\+\+\. Подойдёт, чтобы отвлечься на 5 минут и немного разгрузить голову\.

![0980_Release_7_20_ru/image3.png](https://import.viva64.com/docx/blog/0980_Release_7_20_ru/image3.png)

Пройти можно [здесь](https://pvs-studio.ru/ru/blog/quest/who_you_are_in_cpp/)\.

**Почитать**\. Несколько статей, написанных командой PVS\-Studio с прошлого релиза:

* Статьи о том, как делали межмодульный анализ в C\+\+ проектах: [часть 1](https://pvs-studio.ru/ru/blog/posts/cpp/0963/), [часть 2](https://pvs-studio.ru/ru/blog/posts/cpp/0965/)\.
* Почему в С\+\+ массивы нужно удалять через delete\[\]? Ответ [здесь](https://pvs-studio.ru/ru/blog/posts/cpp/0973/)\.
* В [этой статье](https://pvs-studio.ru/ru/blog/posts/csharp/0976/) ещё раз рассказали о проблеме связанных переменных в data flow анализе C\# кода\.
* [Статья](https://pvs-studio.ru/ru/blog/posts/0975/) для тех, кто хочет использовать PVS\-Studio, но не находит одобрения со стороны начальства или коллег\. Разбираемся с опасениями, ищем решения возможных проблем\.

**Посмотреть**\. На TechLead Conf 2022 рассказали о том, как SAST\-решения ищут дефекты безопасности: [ссылка](https://youtu.be/cREwHy4H3jM)\.



**Загрузить PVS\-Studio 7\.20** можно на [этой странице](https://pvs-studio.ru/ru/pvs-studio/download/), получить триал – [тут](https://pvs-studio.ru/ru/pvs-studio/download/)\.

Вопрос напоследок: как вам такой формат пресс\-релиза?