Для получения триального ключа
заполните форму ниже
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Мне интересно попробовать плагин на:
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
PVS-Studio 7.21: GitLab Code Quality, U…

PVS-Studio 7.21: GitLab Code Quality, Unreal Engine

19 Окт 2022

Вышел новый релиз PVS-Studio – 7.21. В этой заметке описали основные улучшения анализатора и собрали материалы от нашей команды, вышедшие в последнее время: статьи, опросы и записи докладов с конференций.

1000_Release_7_21_ru/image1.png

Загрузить PVS-Studio 7.21 можно тут. Если нет лицензионного ключа, получить триал можно здесь.

Итак, что же нового?

Отчёты PVS-Studio, совместимые с GitLab Code Quality

1000_Release_7_21_ru/image2.png

Результаты работы PVS-Studio теперь можно сконвертировать в отчёт, совместимый с GitLab Code Quality. Это поможет следить за качеством проекта в рамках экосистемы GitLab.

В документации по использованию PVS-Studio в GitLab CI/CD описали, как получить такой отчёт.

Более тесная интеграция с Unreal Engine

Мы продолжаем развивать поддержку проектов на основе Unreal Engine. В этот раз сразу три новости:

  • Научили анализатор понимать ещё больше типов, специфичных для Unreal Engine проектов. Хороших срабатываний должно стать больше, ложных – меньше.
  • В документации описали, как с помощью PVS-Studio проверять Unreal Engine проекты под Linux.
  • Сделали pull request, который позволит использовать больше настроек анализатора при работе с UE-проектами. Например, указывать таймаут для анализа файлов. Изменения уже закоммичены в код движка и будут доступны в следующей версии Unreal Engine.

Улучшение кроссплатформенных сценариев работы

Плагин PVS-Studio для Visual Studio теперь умеет работать с файлами подавления в формате JSON (ранее формат поддерживался только утилитах в Linux и macOS). Это упрощает кроссплатформенные сценарии работы с подавленными предупреждениями. Внедрить PVS-Studio в кроссплатформенные проекты с legacy-кодом также станет легче.

Новые возможности подавления предупреждений

Теперь вы можете автоматически фильтровать предупреждения анализатора, сообщения которых содержат определённый текст. Это позволит подавлять предупреждения по шаблону, не отключая диагностики целиком. Описать такой фильтр можно в .pvsconfig-файлах (C++, C#) или прямо в коде (только C++).

Рассмотрим пример. Диагностика V3022 C# анализатора PVS-Studio выдаёт предупреждение, если выражение в коде всегда истинно или ложно.

Взглянем на фрагмент кода:

static void ProcessStr(String str)
{
  if (str == "temp")
  {
    if (str.Length != 0) // V3022 (expression is always true)
      ....
    
    if (str.Length == 0) // V3022 (expression is always false)
      ....
  }
}

Допустим, мы не хотим выключать диагностику V3022 целиком, но хотим видеть только предупреждения на условия, которые всегда ложны. Для этого достаточно записать в .pvsconfig-файл такой фильтр:

//-V::3022::{always true}

PVS-Studio отфильтрует предупреждения V3022, которые содержат текст "always true". На примере кода выше первое предупреждение пропадёт, а второе останется.

Документация по файлам конфигурации диагностик (.pvsconfig)

Файлы конфигурации диагностик позволяют конфигурировать поведение анализатора, например:

  • изменить уровень диагностик;
  • исключить из результатов анализа предупреждения по определённому паттерну;
  • изменить текст предупреждения и т.п.

В новом разделе документации мы описали все возможности .pvsconfig-файлов и способы работы с ними в разном окружении.

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

C, C++

  • V1090. The 'std::uncaught_exception' function is deprecated since C++17 and is removed in C++20. Consider replacing this function with 'std::uncaught_exceptions'.
  • V1091. The pointer is cast to an integer type of a larger size. Casting pointer to a type of a larger size is an implementation-defined behavior.
  • V1092. Recursive function call during the static/thread_local variable initialization might occur. This may lead to undefined behavior.

C#

  • V3178. Calling method or accessing property of potentially disposed object may result in exception.
  • V3179. Calling element access method for potentially empty collection may result in exception.
  • V3180. The 'HasFlag' method always returns 'true' because the value '0' is passed as its argument.
  • V3181. The result of '&' operator is '0' because one of the operands is '0'.
  • V3182. The result of '&' operator is always '0'.

Интерактив

Сделали опрос "Кто ты в мире C#". Пройти его можно здесь.

1000_Release_7_21_ru/image3.png

Кстати, напишите, если сможете пройти тест не на результат "Ты сборщик мусора". Или мне так не везёт, или наша C# команда всех затроллить решила... :)

Если вы пропустили другие интерактивы, вот они:

  • опрос "Кто ты в мире C++";
  • игра "Поиск ошибок в коде на C#";
  • игра "Поиск ошибок в коде на C++".

Статьи

Для тех, кто пишет на C++:

  • Топ-10 докладов на С++ конференциях 2019-2022 года (ссылка);
  • Есть ли жизнь без RTTI: пишем свой dynamic_cast (ссылка);
  • Боремся с 16-летним легаси-кодом, или исправляем C и C++ front-end в PVS-Studio (ссылка);
  • Интервью с Джейсоном Тернером, одним из ведущих подкаста "CppCast": история и причины закрытия проекта (ссылка).

Для тех, кто пишет на C#:

  • Сортировки в C#: OrderBy.OrderBy или OrderBy.ThenBy? Разбираемся, что эффективнее и почему (ссылка);
  • Особенности реализации List в C# (ссылка);
  • Чем опасны уязвимые зависимости в проекте и как с этим помогает SCA? (ссылка);
  • Планируете взяться за .NET MAUI? Будьте готовы к приключениям с NullReferenceException (ссылка).

Поиск ошибок в коде проектов:

  • игровой движок Stride (C#): ссылка;
  • фреймворк машинного обучения ML.NET (C#): ссылка;
  • сборочная система MSBuild (C#): ссылка;
  • фреймворк и CMS Orchard Core (C#): ссылка;
  • JavsScript-движок Rhino (Java): ссылка.

Доклады

В сеть выложили записи докладов с конференции DotNext 2022 Spring. Полный список записей доступен здесь.

1000_Release_7_21_ru/image4.png

От нашей команды на конференции было 2 доклада, и оба посвящены вопросам безопасности:

  • Никита Липилин: SAST и SCA: поиск дефектов безопасности в коде проекта и его зависимостях. Ссылка.
  • Сергей Васильев: Обработка XML-файлов как причина появления уязвимостей. Ссылка.

Ещё одна конференция, доклады с которой стали доступны – Heisenbug 2022 Spring. Полный список записей докладов – здесь.

1000_Release_7_21_ru/image5.png

Доклады от нашей команды:

  • Сергей Васильев: Как устроено тестирование средства статического тестирования. Ссылка.
  • Сергей Васильев: Правильно ли вы парсите XML? Разбираемся с уязвимостями. Ссылка.

Последние статьи:

Опрос:

Популярные статьи по теме
PVS-Studio 7.20: Unreal Engine, SAST, SCA

Дата: 18 Авг 2022

Автор: Сергей Васильев

В этом пресс-релизе пробуем новый формат: основная информация кратко изложена в одном разделе. Если интересны детали, есть разделы с более подробным описанием. Выбирайте то, что вам ближе.
PVS-Studio 7.19: что новенького?

Дата: 24 Июн 2022

Автор: Сергей Васильев

Недавно вышла новая версия PVS-Studio – 7.19. В этой заметке расскажем, что нового появилось в анализаторе, какие разделы документации мы улучшили, а также о том, что почитать, посмотреть и... во что…
PVS-Studio 7.18: обновления и улучшения

Дата: 13 Апр 2022

Автор: Сергей Васильев

Мы выпустили новый релиз PVS-Studio – 7.18. В этой заметке расскажем, как развиваем security-направление, зачем нужна новая система типов в C++ анализаторе, как улучшили анализ кода для embedded-сист…
Релиз PVS-Studio 7.17: улучшаем работу с Unreal Engine, ASP.NET Core, Texas Instruments

Дата: 14 Фев 2022

Автор: Сергей Васильев

С радостью представляем вам сводку новостей о первом релизе PVS-Studio в 2022 году. Сегодня поговорим об улучшениях в работе с Unreal Engine и ASP.NET Core проектами, новых диагностиках, а также о то…
PVS-Studio 7.16, взятие рубежей: MISRA C, Visual Studio 2022, .NET 6

Дата: 10 Дек 2021

Автор: Андрей Карпов

Последний релиз в уходящем 2021 году закрывает сразу несколько важных задач, поставленных перед командой PVS-Studio. Добавлена поддержка Visual Studio 2022, платформы .NET 6 и C# 10.0. Для стандарта …

Комментарии (0)

Следующие комментарии
Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо