В этом пресс-релизе пробуем новый формат: основная информация кратко изложена в одном разделе. Если интересны детали, есть разделы с более подробным описанием. Выбирайте то, что вам ближе.
Кратко
Security. Покрыли все категории из OWASP Top 10 2021: на каждую есть минимум по одной диагностике. В C# проектах теперь можно искать зависимости с уязвимостями – реализовали SCA (Software Composition Analysis).
Unreal Engine. В Unreal Engine 5.0.3 исправили баг с поиском PVS-Studio: теперь анализ работает без workaround'ов. Ещё мы улучшили анализ UE-проектов: меньше ложных срабатываний, больше хороших.
Кроссплатформенный анализ C и C++ проектов. Доработали утилиты pvs-studio-analyzer и CompilerCommandsAnalyzer: пользоваться ими стало удобнее. Сами утилиты описали в документе.
Интерактив:
- сделали игру на поиск ошибок в C# коде: поиграть;
- составили развлекательный тест "Кто ты в мире C++": узнать.
Получить триал и загрузить PVS-Studio 7.20 можно здесь. Чтобы не пропускать пресс-релизы и самые интересные статьи, подписывайтесь на рассылки.
Подробно
Улучшения анализатора
OWASP Top 10 2021: ищите дефекты безопасности из всех категорий.
В релизе 7.20 мы покрыли последнюю категорию из OWASP Top 10 2021 – A06. Теперь с помощью PVS-Studio можно искать дефекты безопасности из всех категорий, перечисленных в OWASP Top 10.
На специальной странице можно посмотреть, какие диагностические правила ищут проблемы из каждой категории.
SCA: проверяйте зависимости C# проектов на уязвимости.
Приложение может быть уязвимо, если использует зависимости c уязвимостями. Чтобы искать "опасные" зависимости, при разработке используют SCA-решения (Software Composition Analysis).
PVS-Studio для C# теперь тоже ищет подобные дефекты безопасности. Анализатор проверяет, из каких компонентов состоит приложение: если находит зависимость с уязвимостью – выдаёт предупреждение.
Подробности описали в документации к диагностическому правилу V5625.
Unreal Engine: больше хороших срабатываний, меньше ложных.
В Unreal Engine 5.0.3 исправили баг с поиском PVS-Studio. Теперь анализировать UE 5 проекты можно без workaround'ов.
Кроме того, PVS-Studio теперь лучше понимает код Unreal Engine проектов. Анализатор выдаёт меньше ложных предупреждений и больше знает о типах, специфичных для движка. Например, об аналогах контейнеров из стандартной библиотеки C++.
Документация об анализе Unreal Engine проектов.
Кроссплатформенный анализ C и C++ проектов: улучшения утилит, новая документации.
Мы улучшили утилиты кроссплатформенного анализа C и C++ проектов: pvs-studio-analyzer и CompilerCommandsAnalyzer. Например, теперь они лучше определяют тип компилятора, который используется в проекте. Если определить его всё же не удалось, можно задать тип вручную (см. флаг '--compiler').
Сценарии использования, флаги запуска и коды возврата описали в новом разделе документации.
Новые диагностики
C, C++:
- V1086. Call of the 'Foo' function will lead to buffer underflow.
- V1087. Upper bound of case range is less than its lower bound. This case may be unreachable.
- V1088. No objects are passed to the 'std::scoped_lock' constructor. No locking will be performed. This can cause concurrency issues.
- V1089. Waiting on condition variable without predicate. A thread can wait indefinitely or experience a spurious wake up.
C#:
- V3177. Logical literal belongs to second operator with a higher priority. It is possible literal was intended to belong to '??' operator instead.
- V5624. OWASP. Use of potentially tainted data in configuration may lead to security issues.
- V5625. OWASP. Referenced package contains vulnerability.
Разное
Рассылки пресс-релизов и лучших статей. Подпишитесь, чтобы не пропускать новые статьи и пресс-релизы. Выборка статей приходит раз в месяц, информация о релизах – раз в два.
Историю о создании рассылок рассказали в отдельной статье.
Игра: найди ошибку в коде на C#. Теперь игра на внимательность доступна и для C# (раньше была только для C++).
Суть игры:
- есть 10 фрагментов кода. Все – из реальных проектов;
- каждый фрагмент содержит ошибку. Есть 60 секунд, чтобы найти её;
- набираете очки, в конце получаете результат.
Поиграть: версия для C#, версия для C++.
Делитесь с коллегами, чтобы выяснить, кто самый внимательный баг-хантер. ;)
Тест: кто ты из мира C++. Развлекательный тест, который подскажет, кто вы в мире C++. Подойдёт, чтобы отвлечься на 5 минут и немного разгрузить голову.
Пройти можно здесь.
Почитать. Несколько статей, написанных командой PVS-Studio с прошлого релиза:
- Статьи о том, как делали межмодульный анализ в C++ проектах: часть 1, часть 2.
- Почему в С++ массивы нужно удалять через delete[]? Ответ здесь.
- В этой статье ещё раз рассказали о проблеме связанных переменных в data flow анализе C# кода.
- Статья для тех, кто хочет использовать PVS-Studio, но не находит одобрения со стороны начальства или коллег. Разбираемся с опасениями, ищем решения возможных проблем.
Посмотреть. На TechLead Conf 2022 рассказали о том, как SAST-решения ищут дефекты безопасности: ссылка.
Загрузить PVS-Studio 7.20 можно на этой странице, получить триал – тут.