Новейшая версия статического анализатора PVS-Studio порадует вас такими возможностями: анализ испорченных данных, поддержка .NET 5. Утилита Blame Notifier теперь может сортировать предупреждения по дате фиксации.
Обратите внимание, что у сайта продукта PVS-Studio теперь новый адрес и новый дизайн. Проверить это можно здесь: https://pvs-studio.com. Если вы заметили на сайте какие-либо ошибки, мы будем рады, если вы сообщите нам о них.
Анализ испорченных данных, SQL-инъекции
В PVS-Studio для C ++ давно есть механизмы поиска фрагментов кода, использующих непроверенные исходные данные. Сергей Васильев написал на эту тему статью Стрелять себе в ногу при обработке входных данных еще в 2018 году. Сейчас Сергей возглавляет департамент C #. Он применил свои знания и опыт для разработки анализа испорченных данных в ядре анализатора C #.
Первое правило из стандарта OWASP ASVS появилось в анализаторе PVS-Studio C #. Эта диагностика обнаруживает ошибки, связанные с испорченными данными. Это диагностическое правило V5608, которое ищет потенциальные SQL-инъекции. Этот класс ошибок по-прежнему лидирует в рейтинге OWASP Top 10. В будущих версиях PVS-Studio мы планируем добавить диагностические правила для обнаружения многих других типов потенциальных уязвимостей испорченных данных.
.NET 5
PVS-Studio теперь полностью поддерживает анализ проектов, ориентированных на .NET 5 и использующих возможности C # 9. Кроме того, анализатор C # под Linux и macOS также использует для своей работы платформу .NET 5. Следовательно, для указанных выше систем потребуется установленный пакет SDK для .NET 5. Версия анализатора для Windows по-прежнему использует .NET Framework 4.7.2.
Подробности читайте в статье Наконец-то! PVS-Studio поддерживает проекты .NET 5 ».
Уведомитель об обвинении
Утилита Blame Notifier позволяет автоматически распределять предупреждения на основе информации о виновности из системы контроля версий. Отныне утилита может сортировать предупреждения по номеру и дате фиксации. Это позволяет вам видеть предупреждения, появившиеся в течение определенного дня.
Ранее подобная функция была доступна только при использовании PVS-Studio с SonarQube. Не все наши пользователи хотят использовать SonarQube, но большинству из них необходимо сортировать предупреждения по дате. Теперь у нас больше вариантов и сценариев. Подробнее: Новые возможности PVS-Studio по уведомлению разработчиков об обнаруженных ошибках.
Примечание. Говоря об отчетах, мы хотели бы отметить новую стороннюю утилиту. Теперь Blame Notifier - не единственный вариант, позволяющий автоматически публиковать отчеты. Наш пользователь написал облегченный аналог этой утилиты. Для работы не требуется .NET. Попробуйте на GitHub (Скрипт оповещения о виновности).
16 новых диагностик
- V832. Лучше использовать синтаксис = default; вместо пустого тела.
- V1070. Знаковое значение преобразуется в беззнаковое с последующим расширением до большего типа в тернарном операторе.
- V1071. Рассмотрите возможность проверки функции foo. Возвращаемое значение не всегда используется.
- V1072. Не на всех путях выполнения буфер надежно очищается.
- V1073. Подумайте о проверке опечаток. Проверьте следующий блок кода после оператора if.
- V2577. MISRA. Аргумент функции, соответствующий параметру, объявленному как массив, должен иметь соответствующее количество элементов.
- V2578. MISRA. Идентификатор с типом массива, переданный в качестве аргумента функции, не должен распадаться на указатель.
- V2579. MISRA. Макрос не следует определять с тем же именем, что и ключевое слово.
- V2580. MISRA. Спецификатор "restrict" использовать не следует.
- V2581. MISRA. Однострочные комментарии не должны заканчиваться маркером продолжения.
- V2582. MISRA. Блок памяти следует освобождать только в том случае, если он был выделен функцией стандартной библиотеки.
- V3170. Оба операнда оператора ?? идентичны.
- V3171. В качестве размера массива используется потенциально отрицательное значение.
- V3551. АВТОСАР. Идентификатор с типом массива, переданный в качестве аргумента функции, не должен распадаться на указатель.
- V5013. OWASP. Хранение учетных данных внутри исходного кода может привести к проблемам с безопасностью.
- V5608. OWASP. Возможна SQL инъекция. Для создания команды SQL используются потенциально испорченные данные.
Другие особенности
- Анализатор C ++ обеспечивает расширенную поддержку проектов Ninja в Windows с использованием базы данных компиляции JSON (compile_commands.json).
- Анализатор C ++ PVS-Studio тратит на 10% меньше времени на проверку исходных файлов с использованием компилятора Clang.
- Плагин PVS-Studio для JetBrains Rider теперь работает с версией Rider 2021.1.
- Для проверки проектов C ++ и C # Visual Studio PVS-Studio_Cmd.exe вы можете напрямую передать файл подавления. Раньше вы могли добавлять подавленные предупреждения только на уровне проектов и решений.