﻿# PVS\-Studio 7\.13: SQL инъекции, Blame Notifier, \.NET 5

Очередная версия статического анализатора PVS\-Studio интересна следующими нововведениями: анализ непроверенных данных \(tainted data analysis\), поддержка \.NET 5, утилита Blame Notifier научилась сортировать предупреждения по датам коммитов\.

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

Хотим обратить внимание, что сайт продукта PVS\-Studio сменил свой адрес и дизайн\. Теперь он располагается [здесь](https://pvs-studio.ru/ru/)\. Если вы заметите на сайте какие\-то ошибки, то мы будем рады, если вы сообщите нам про них\.

Также хотим отметить, что теперь анализатор [PVS\-Studio включен в реестр отечественного ПО](https://pvs-studio.ru/ru/blog/posts/0816/)\.

## Tainted data analysis, SQL инъекции

В PVS\-Studio для C\+\+ уже давно имеются механизмы для поиска фрагментов кода, где используются непроверенные исходные данные\. Про это ещё в 2018 году [Сергей Васильев](https://pvs-studio.ru/ru/blog/?author=sergey-vasiliev) написал заметку "[Стреляем в ногу, обрабатывая входные данные](https://pvs-studio.ru/ru/blog/posts/cpp/0599/)"\. Сейчас Сергей является руководителем C\# направления, и он применил свои знания и опыт, чтобы развить tainted data analysis в ядре C\# анализатора\.

В C\# анализаторе PVS\-Studio появилось первое диагностическое правило из стандарта OWASP ASVS, ищущее в коде ошибки, связанные с непроверенными данными \(tainted data\)\. Это диагностическое правило [V5608](https://pvs-studio.ru/ru/docs/warnings/v5608/) для поиска потенциальных SQL инъекций\. Данный класс ошибок занимает важное место в рейтинге OWASP Top 10, и в будущих релизах PVS\-Studio мы будем добавлять диагностические правила для поиска множества других видов потенциальных tainted data уязвимостей\.

## \.NET 5

Теперь PVS\-Studio полноценно поддерживает анализ проектов, ориентированных на \.NET 5 и использующих возможности C\# 9\. Кроме того, C\# анализатор под Linux и macOS также использует платформу \.NET 5 для своей работы\. Таким образом, на этих системах потребуется наличие установленного пакета \.NET 5 SDK\. Версия анализатора под Windows, как и раньше, использует \.NET Framework 4\.7\.2\.

Более подробно об этом можно прочитать в статье "[Свершилось\! PVS\-Studio поддерживает анализ проектов под \.NET 5](https://pvs-studio.ru/ru/blog/posts/csharp/0822/)"\.

## Blame Notifier

Утилита Blame Notifier для [автоматической рассылки отчётов](https://pvs-studio.ru/ru/docs/manual/0050/) о найденных анализатором предупреждениях на основе blame информации из системы контроля версий теперь может сортировать предупреждения по номерам и датам коммитов\. Это позволяет видеть предупреждения на код, появившиеся только за определённый день\.

Раньше аналогичная функциональность была доступна только при использовании PVS\-Studio в связке с SonarQube\. Не все наши пользователи хотят использовать SonarQube, но им нужна возможность сортировки предупреждений по датам\. Теперь стало больше вариантов и сценариев\. Подробнее: [Новые возможности PVS\-Studio по оповещению разработчиков о найденных ошибках](https://pvs-studio.ru/ru/blog/posts/0827/)\.

**Примечание\.** Продолжая тему отчётов, следует отметить новую стороннюю утилиту\. Теперь автоматическую публикацию отчётов можно делать не только с помощью Blame Notifier\. Наш пользователь [написал легковесный аналог](https://pvs-studio.ru/ru/blog/posts/0821/) \(не требующий \.NET для работы\) данной утилиты, который вы можете попробовать на GitHub \([Blame Notifier Script](https://github.com/viva64/blame-notifier)\)\.

## 16 новых диагностик

* [V832](https://pvs-studio.ru/ru/docs/warnings/v832/)\. It's better to use '\= default;' syntax instead of empty body\.
* [V1070\.](https://pvs-studio.ru/ru/docs/warnings/v1070/) Signed value is converted to an unsigned one with subsequent expansion to a larger type in ternary operator\.
* [V1071](https://pvs-studio.ru/ru/docs/warnings/v1071/)\. Consider inspecting the 'foo' function\. The return value is not always used\.
* [V1072](https://pvs-studio.ru/ru/docs/warnings/v1072/)\. The buffer is securely cleared not on all execution paths\.
* [V1073](https://pvs-studio.ru/ru/docs/warnings/v1073/)\. Consider checking for misprints\. Check the following code block after the 'if' statement\.
* [V2577](https://pvs-studio.ru/ru/docs/warnings/v2577/)\. MISRA\. The function argument corresponding to a parameter declared to have an array type should have an appropriate number of elements\.
* [V2578](https://pvs-studio.ru/ru/docs/warnings/v2578/)\. MISRA\. An identifier with array type passed as a function argument should not decay to a pointer\.
* [V2579](https://pvs-studio.ru/ru/docs/warnings/v2579/)\. MISRA\. Macro should not be defined with the same name as a keyword\.
* [V2580](https://pvs-studio.ru/ru/docs/warnings/v2580/)\. MISRA\. The 'restrict' specifier should not be used\.
* [V2581](https://pvs-studio.ru/ru/docs/warnings/v2581/)\. MISRA\. Single\-line comments should not end with a continuation token\.
* [V2582](https://pvs-studio.ru/ru/docs/warnings/v2582/)\. MISRA\. Block of memory should only be freed if it was allocated by a Standard Library function\.
* [V3170](https://pvs-studio.ru/ru/docs/warnings/v3170/)\. Both operands of the '??' operator are identical\.
* [V3171](https://pvs-studio.ru/ru/docs/warnings/v3171/)\. Potentially negative value is used as the size of an array\.
* [V3551](https://pvs-studio.ru/ru/docs/warnings/v3551/)\. AUTOSAR\. An identifier with array type passed as a function argument should not decay to a pointer\.
* [V5013](https://pvs-studio.ru/ru/docs/warnings/v5013/)\. OWASP\. Storing credentials inside source code can lead to security issues\.
* [V5608](https://pvs-studio.ru/ru/docs/warnings/v5608/)\. OWASP\. Possible SQL injection\. Potentially tainted data is used to create SQL command\.

## Прочее

* В C\+\+ анализаторе улучшена поддержка проверки Ninja проектов на Windows с использованием JSON Compilation Database \(compile\_commands\.json\)\.
* Использование компилятора Clang для сборки C\+\+ анализатора PVS\-Studio позволило сократить на 10% время его работы при проверке исходных файлов\.
* Плагин PVS\-Studio для JetBrains Rider теперь поддерживает работу с версией Rider 2021\.1\.
* В утилиту для поверки C\+\+ и C\# Visual Studio проектов PVS\-Studio\_Cmd\.exe добавлена возможность передавать файл подавленных сообщений напрямую\. До этого подавленные сообщения можно было добавлять только на уровне проектов и solution'а\.

## Некоторые статьи, опубликованные с момента предыдущего релиза

1. [Пример, как в PVS\-Studio появляются новые диагностики](https://pvs-studio.ru/ru/blog/posts/cpp/0814/)
1. [Как PVS\-Studio защищает от поспешных правок кода](https://pvs-studio.ru/ru/blog/posts/cpp/0817/)
1. [Теперь PVS\-Studio ещё лучше знает, что за зверь такой – strlen](https://pvs-studio.ru/ru/blog/posts/cpp/0824/)
1. [Ускоряем сборку и анализ при помощи Incredibuild](https://pvs-studio.ru/ru/blog/posts/cpp/0826/)