﻿# PVS\-Studio 7\.18: обновления и улучшения

Мы выпустили новый релиз PVS\-Studio – 7\.18\. В этой заметке расскажем, как развиваем security\-направление, зачем нужна новая система типов в C\+\+ анализаторе, как улучшили анализ кода для embedded\-систем и не только\.

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

## Находим ещё больше дефектов безопасности: 9 из 10 категорий OWASP Top 10 2021

Мы продолжаем развивать PVS\-Studio как SAST\-решение\. Это позволяет пользователям находить ещё больше потенциальных уязвимостей\. 

Одно из основных направлений – разработка security\-диагностик для поиска дефектов из списка [OWASP Top 10 2021](https://owasp.org/Top10/)\. Теперь PVS\-Studio покрывает 9 из 10 категорий этого списка\. Посмотреть, как диагностики соотносятся с категориями OWASP Top 10, можно [здесь](https://pvs-studio.ru/ru/pvs-studio/sast/owasptopten/)\.

Непокрытой осталась одна категория – [A06:2021](https://owasp.org/Top10/A06_2021-Vulnerable_and_Outdated_Components/)\. Один из вариантов покрыть её – научить анализатор искать в проектах компоненты с известными уязвимостями\. Другими словами – PVS\-Studio должен проводить software composition analysis \(SCA\)\. 

Для начала мы хотим добавить SCA в C\# анализатор\. Планируем сделать это в одном из будущих релизов\.

## Новый режим мониторинга компиляции на Windows: ловит все запуски компилятора

Система мониторинга компиляции на Windows нужна, чтобы анализировать проекты на C и C\+\+\. Причём сборочная система неважна\. Важно только, чтобы PVS\-Studio [поддерживал компилятор](https://pvs-studio.ru/ru/pvs-studio/#languages_and_compilers), который используется в проекте\.

Однако у системы мониторинга был недостаток: если процесс компилятора быстро завершался, система могла его не отследить\. Из\-за этого PVS\-Studio не анализировал файлы, компиляцию которых не успевал перехватывать\. 

Чаще всего с проблемой сталкивались разработчики, которые пишут код под embedded\-платформы\.

Новый режим анализа решает описанную проблему\. В нём PVS\-Studio перехватывает все запуски компилятора\. Быстро компилируется код или нет – неважно\.

Подробнее режим описан в [документации](https://pvs-studio.ru/ru/docs/manual/0031/#wrapcompilers)\.

## PVS\-Studio и Visual Studio Code

С отчётами PVS\-Studio можно работать из Visual Studio Code\. Для этого нужно:

* установить плагин Sarif Viewer;
* преобразовать лог в формат SARIF;
* загрузить отчёт анализатора\.

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

Анализ напрямую из Visual Studio Code запускать пока нельзя\. Если вас интересует такая возможность – [напишите об этом](https://pvs-studio.ru/ru/about-feedback/)\. По фидбеку оценим, насколько функциональность востребована\.

## Более глубокий анализ C\+\+ кода

Мы обновили систему типов в C\+\+ анализаторе\. Теперь PVS\-Studio лучше разбирает современный C\+\+: стандартную библиотеку, сложные конструкции, шаблоны\. Диагностики стали точнее, а значит, находят больше опасных мест и выдают меньше ложных предупреждений\. 

Подробнее рассказали об этом в [докладе](https://youtu.be/36MEItqw328)\.

## Интеграция PVS\-Studio с CMake и GitHub Actions

В новых разделах документации мы описали, как можно интегрировать PVS\-Studio в [GitHub Actions](https://pvs-studio.ru/ru/docs/manual/6579/) и [CMake](https://pvs-studio.ru/ru/docs/manual/6591/)\.

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

### C, C\+\+

* [V1079](https://pvs-studio.ru/ru/docs/warnings/v1079/)\. Parameter of 'std::stop\_token' type is not used inside function's body\.
* [V1080](https://pvs-studio.ru/ru/docs/warnings/v1080/)\. Call of 'std::is\_constant\_evaluated' function always returns the same value\.
* [V1081](https://pvs-studio.ru/ru/docs/warnings/v1081/)\. Argument of abs\(\) function is minimal negative value\. Such absolute value can't be represented in two's complement\. This leads to undefined behavior\.
* [V1082](https://pvs-studio.ru/ru/docs/warnings/v1082/)\. Function marked as 'noreturn' may return control\. This will result in undefined behavior\.

### C\#

* [V5619](https://pvs-studio.ru/ru/docs/warnings/v5619/)\. OWASP\. Possible log injection\. Potentially tainted data is written into logs\.
* [V5620](https://pvs-studio.ru/ru/docs/warnings/v5620/)\. OWASP\. Possible LDAP injection\. Potentially tainted data is used in a search filter\.
* [V5621](https://pvs-studio.ru/ru/docs/warnings/v5621/)\. OWASP\. Error message contains potentially sensitive data that may be exposed\.

## Почитать, посмотреть и попробовать

### Почитать

С момента прошлого релиза проверили качество кода нескольких Open Source проектов:

* [Barotrauma](https://pvs-studio.ru/ru/blog/posts/csharp/0930/) \(C\#\);
* [Eto\.Forms](https://pvs-studio.ru/ru/blog/posts/csharp/0929/) \(C\#\);
* [Ogre3D](https://pvs-studio.ru/ru/blog/posts/cpp/0927/) \(C\+\+\);
* [MuditaOS](https://pvs-studio.ru/ru/blog/posts/cpp/0925/) \(C\+\+\)\.

Нашли несколько подтверждений тому, почему статический анализ лучше использовать регулярно\. Как? Подробно описали [здесь](https://pvs-studio.ru/ru/blog/posts/cpp/0799/), если вкратце – алгоритм примерно такой:

* разработчики пишут новый код для Open Source проектов;
* мы анализируем его с помощью PVS\-Studio;
* смотрим отчёты анализатора и находим ошибки, которые пропустили разработчики;
* пишем об этом\.

Некоторые из найденных проблем описали в этих статьях:

* [Как PVS\-Studio защищает от поспешных правок кода, пример N3](https://pvs-studio.ru/ru/blog/posts/cpp/0922/)
* [Как PVS\-Studio защищает от поспешных правок кода, пример N4](https://pvs-studio.ru/ru/blog/posts/cpp/0924/)

Кроме того, написали статьи про безопасность\. В них рассмотрели дефекты, связанные с обработкой XML\-файлов, а именно:

* как уязвимости выглядят в коде;
* как провести атаку на приложение с уязвимостью;
* какими будут последствия\.

Описали это в двух статьях:

* [Почему моё приложение при открытии SVG\-файла отправляет сетевые запросы?](https://pvs-studio.ru/ru/blog/posts/csharp/0923/)
* [Уязвимости из\-за обработки XML\-файлов: XXE в C\# приложениях в теории и на практике](https://pvs-studio.ru/ru/blog/posts/csharp/0918/)

Больше статей – в нашем [блоге](https://pvs-studio.ru/ru/blog/posts/)\.

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

Мы не только пишем статьи, но и снимаем видео\. Новые материалы на нашем YouTube\-канале:

* [Using PVS\-Studio with JetBrains Rider](https://youtu.be/7isOxlSMu60)
* [Mistakes and suspicious code fragments — or how the static analyzer checked \.NET 6](https://youtu.be/Mk5gbW8WZL0)
* [How to make code reliable and secure \[The MISRA standard and PVS\-Studio\]](https://youtu.be/01tEjvICh4k)
* [10 C\# tips for beginners](https://youtu.be/9UsjhFxQMhM)

Кстати, в феврале мы участвовали в подкасте DotNet & More\. Там поговорили о статическом анализе, Roslyn, security и не только\. Посмотреть запись можно [здесь](https://youtu.be/mYrLCCgoc-E)\. Если больше нравится слушать, в описании видео на YouTube есть ссылки на аудиозапись\.

### Попробовать

**Нет лицензионного ключа**

Если хотите попробовать PVS\-Studio, нужно сделать 3 простых шага:

* запросить триальный ключ;
* загрузить дистрибутив;
* проверить проект\.

Пройти по шагам поможет [эта страница](https://pvs-studio.ru/ru/pvs-studio/try-free/)\. Не забудьте поделиться впечатлениями\. :\)

**Лицензионный ключ есть**

Последнюю версию PVS\-Studio можно загрузить [здесь](https://pvs-studio.ru/ru/pvs-studio/download-all/)\.