Новейшая версия статического анализатора 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 вы можете напрямую передать файл подавления. Раньше вы могли добавлять подавленные предупреждения только на уровне проектов и решений.

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