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

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

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

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

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

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

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


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

>
>
PVS-Studio в 2022 году

PVS-Studio в 2022 году

19 Янв 2023

На дворе январь 2023, а значит, самое время подвести итоги уже прошлого 2022 года. Мы расскажем, чем занимались, и покажем, что нового появилось в анализаторе за это время. Давайте вместе взглянем на то, как развивался анализатор PVS-Studio в 2022 году :).

1025_PVS_2022_ru/image1.png

Unreal Engine

В прошлом году мы значительно улучшили интеграцию анализатора с игровым движком Unreal Engine. PVS-Studio теперь поддерживает Unreal Engine 5, а в Unreal Engine 5.0.3 был исправлен баг с поиском анализатора (и теперь-то всё точно работает).

Анализатор научился лучше работать со специфичными для UE типами: например, с аналогами контейнеров из стандартной библиотеки C++. Это помогло снизить количество ложноположительных предупреждений.

С файлами подавления предупреждений теперь можно работать через плагины PVS-Studio для Visual Studio и JetBrains Rider (подробнее об этом читайте в документации). Также мы сделали pull-request, позволяющий использовать больше настроек анализатора при работе с UE-проектами.

Кроме того, проекты на Unreal Engine теперь можно проверять не только на Windows, но и на Linux. Разобраться со всем этим поможет обновленная документация по использованию PVS-Studio для проверки Unreal Engine проектов.

Best Warnings

Начать работу с PVS-Studio поможет фильтр "Best Warnings", который мы существенно доработали в 2022 году.

Анализатор PVS-Studio позволяет отображать наиболее интересные предупреждения с помощью специального фильтра. Механизм отбора предупреждений основан на анализе разнообразных проектов и найденных в них наиболее распространённых и опасных ошибок.

Фильтр упрощает первичное ознакомление с отчётом анализатора. Теперь можно буквально в один клик посмотреть самые интересные срабатывания, которые с наибольшей вероятностью являются реальными ошибками. Предупреждений в подборке будет не больше 10, и вы сможете просмотреть их быстро.

1025_PVS_2022_ru/image2.gif

Фильтр "Best Warnings" доступен в приложении "C and C++ Compiler Monitoring UI", а также в плагинах PVS-Studio для:

  • Visual Studio;
  • Rider;
  • CLion;
  • IntelliJ IDEA.

Таким образом, фильтр "Best Warnings" позволяет мгновенно оценить эффективность инструмента при первом запуске анализатора.

Плагины для Visual Studio Code и Qt Creator

В 2022 году мы добавили плагины PVS-Studio для Visual Studio Code и Qt Creator. Они значительно расширяют возможности кроссплатформенного использования анализатора.

Расширение PVS-Studio для Visual Studio Code выглядит следующим образом:

1025_PVS_2022_ru/image3.png

А вот плагин для Qt Creator:

1025_PVS_2022_ru/image5.png

Сейчас в расширениях для Visual Studio Code и Qt Creator вы можете работать с отчётом PVS-Studio: смотреть предупреждения, фильтровать их, сортировать в гриде и т. п. Запускать анализ пока нельзя, но мы планируем добавить эту возможность в следующих релизах.

Подробнее об использовании плагинов можно узнать в документации: Qt Creator и Visual Studio Code.

Кроссплатформенная проверка C и C++ проектов

PVS-Studio уже довольно давно поддерживает кроссплатформенный анализ проектов (на основе compile_commands.json или трассировки), но некоторые сценарии кроссплатформенного использования анализатора были недостаточно проработаны.

Например, вы разрабатываете кроссплатформенное приложение на основе CMake на трёх платформах: Windows, Linux и macOS — и хотите проанализировать его с помощью PVS-Studio. Это стало возможно благодаря CMake-модулю.

Обращения в поддержку помогли понять, что модуль некорректно работает на Windows. Поэтому в начале 2022 года мы это исправили, и теперь вы можете более тесно интегрировать анализатор в проект на основе CMake сразу на нескольких платформах (а также изучить документацию на этот сценарий использования).

Помимо проверки проектов пользователям важно видеть предупреждения анализатора на свежем коде. Для этого можно отключить их выдачу анализатором на существующем коде. К сожалению, с кроссплатформенным использованием данного механизма тоже были некоторые сложности. Но мы их устранили:

  • suppress-файлы формата JSON теперь работают на всех трёх поддерживаемых платформах. Больше не требуется иметь два набора файлов - *.suppress для Windows и *.json для Linux/macOS;
  • унифицировали алгоритм соответствия предупреждений в отчёте анализатора и этих же предупреждений в suppress-файлах формата JSON на разных платформах. Ранее если предупреждение одинаково выдавалось на всех платформах, то даже при подавлении на Windows оно бы по-прежнему выдавалось на Linux/macOS, и наоборот. Теперь будет достаточно подавить предупреждение на любой из поддерживаемых платформ.

Также мы обновили утилиту кроссплатформенного анализа. Так сложилось, что она имеет различные названия в зависимости от платформы: pvs-studio-analyzer (для Linux и macOS) и CompilerCommandsAnalyzer (для Windows). Теперь она лучше определяет компиляторы, используемые в проекте. Кроме того, появилась возможность указать имя и тип компилятора явно, что особенно полезно в сфере embedded-разработки, где у компиляторов может быть множество разных имён. Сценарии использования утилит, флаги запуска и коды возврата подробно описали в новом разделе документации.

К слову о кроссплатформенности. Сейчас анализатор запускается на Windows, Linux и macOS на архитектуре х86_64. Запустить анализатор нативно на этих же операционных системах под ARM на текущий момент нельзя (исключение – запуск C и C++ анализатора на macOS под ARM с применением Rosetta).

Но нам все равно интересно узнать, много ли найдётся среди читателей нашего блога людей, заинтересованных именно в нативном использовании анализатора на ARM. Насколько для вас критична сборка и анализ проектов на архитектуре ARM?

Security

Мы продолжаем развивать PVS-Studio в направлении выявления потенциальных уязвимостей на ранних этапах разработки ПО.

Приложение может быть уязвимо, если использует зависимости c уязвимостями. Для поиска таких "уязвимых" компонентов приложения при разработке внедряют анализ компонентного состава ПО (SCA, Software Composition Analysis).

Анализатор PVS-Studio теперь умеет искать зависимости с известными уязвимостями в C# проектах. Для этого он проверяет, из каких компонентов состоит приложение, и, если находит компоненты, имеющие дефекты безопасности, выдаёт предупреждения.

В 2022 году мы покрыли последнюю категорию из OWASP Top 10 2021, реализовав SCA. Теперь с помощью PVS-Studio можно искать дефекты безопасности из всех категорий, перечисленных в OWASP Top 10 2021.

Напомним, OWASP Top 10 – это регулярно обновляемый список наиболее распространённых и опасных угроз защищённости Web-приложений. А ознакомиться с классификацией предупреждений PVS-Studio, согласно OWASP, вы можете здесь.

Web

В 2022 году мы активно развивали С# анализатор в соответствии с потребностями пользователей – а многие из наших пользователей занимаются web-разработкой. Поэтому был расширен функционал PVS-Studio в области анализа web-проектов, и теперь анализатор проводит более глубокий анализ web-приложений.

Анализатор лучше понимает методы из ASP.NET Core. Как следствие – PVS-Studio способен находить ещё больше проблемных участков кода и при этом выдавать меньше ложноположительных срабатываний.

Кроме того, мы научили PVS-Studio анализировать Blazor компоненты. С помощью C# анализатора теперь можно проверять блоки @code в .razor файлах.

Embedded

В 2022 году устранили проблему, связанную с пропуском анализатором некоторых короткоживущих процессов при компиляции C и C++ кода. Процесс компиляции мог отрабатывать так быстро, что утилита мониторинга не успевала его отследить и запустить анализ на всех компилируемых файлах. Чаще всего с этой проблемой сталкивались разработчики embedded-проектов.

Реализовали новый режим мониторинга компиляции. Теперь совершенно неважно, быстро компилируется код или нет — анализатор в любом случае отлавливает все процессы компиляции. Кстати, о том, как мы справились с этой проблемой, и о новом режиме в целом подробно рассказали в статье.

Мы также продолжаем добавлять поддержку новых компиляторов и улучшать работу с уже имеющимися в анализаторе PVS-Studio для языков С и С++. В 2022 году также добавили поддержку проверки проектов, собираемых с помощью C6000-CGT – компилятора для встраиваемых систем от Texas Instruments. Кроме того, улучшили определение целевой платформы для компиляторов семейства QNX Momentics QCC, а также поддержали работу С++ анализатора с последними версиями компиляторов QNX.

Улучшение анализа

Наиболее фундаментальным улучшением С++ анализатора в 2022 году стало обновление системы типов. Сделав это, мы создали своеобразный "задел на будущее" для дальнейшей поддержки языка. Теперь PVS-Studio лучше понимает современный C++: стандартную библиотеку, сложные языковые конструкции, шаблоны. Диагностики стали точнее, а анализатор стал находить ещё больше проблем.

Если вам интересны как наши мотивы для столь масштабного обновления С++ анализатора, так и сам процесс, приглашаем вас узнать об этом подробнее в посвящённой этому статье.

Мы продолжаем улучшать и обновлять наш C# анализатор. В 2022 году мы своевременно поддержали анализ проектов, использующих .NET 7 и C# 11.

В 2022 году мы добавили 44 новых диагностики для С++ и С# анализатора. Наиболее наглядно развитие возможностей анализатора показано на графике количества диагностик.

1025_PVS_2022_ru/image7.png

Для С и С++ анализатора: V1077, V1078, V2017, V1079, V1080, V1081, V1082, V834, V835, V1083, V1084, V1085, V1086, V1087, V1088, V1089, V1090, V1091, V1092, V836, V2018, V2019

Для С# анализатора: V3174, V5617, V5618, V5619, V5620, V5621, V3175, V3176, V5622, V5623, V3177, V5624, V5625, V3178, V3179, V3180, V3181, V3182, V3183, V5626, V5627, V5628.

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

1025_PVS_2022_ru/image8.png

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

Интерактивы

В 2022 году нам хотелось порадовать друг друга различного рода интерактивами: играми и тестами. Мы активно работали в этом направлении и создали игру, в которой вы можете посоревноваться с анализатором и проверить свою внимательность в поиске ошибок в коде на С++ и С#.

Мы также создали два развлекательных квиза, чтобы наконец ответить на самые насущные вопросы — "Кто ты в мире С++?" и "Кто ты в мире С#?" (по прохождению которых, кстати, ещё и подарок получить можно). А в преддверии Нового Года и Рождества у нас вышел особый квиз с одним из самых ярких персонажей этого года в главной роли – багом!

Если же захотелось настоящей активности – попробуйте нашу игру и проживите обычный рабочий день программиста, полный дедлайнов, багов и кофе-брейков.

Заключение

Что ж, мы постарались рассказать обо всех важных нововведениях в анализаторе за 2022 год, но некоторые прочие улучшения, увы, остались за кадром.

Например, именно в 2022 году мы наконец запустили рассылку наших пресс-релизов и лучших статей из блога. Подпишитесь, чтобы всегда быть в курсе развития нашего продукта.

Подробнее обо всех изменениях, вошедших в релизы PVS-Studio в 2022 году, можно узнать здесь.

А какие изменения вы бы хотели увидеть в PVS-Studio в 2023 году? Делитесь с нами своими идеями в комментариях.

Популярные статьи по теме
C++ — язык 2022 года. Почему так, и что с другими языками?

Дата: 20 Янв 2023

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

C++ становится языком 2022 года по версии TIOBE, обгоняя Python. Rust, C#, Go и прочие — далеко позади. Странно? Сейчас разберёмся.
PVS-Studio: 2 фишки для быстрого старта

Дата: 08 Дек 2022

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

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

Дата: 06 Дек 2022

Автор: Алёна Фоканова

Привлекательное название статьи должно раскрывать то, что будет в ней. Так вот, работа специалистом поддержки клиентов подразумевает появление вопросов к пользователю. Иногда возникает как раз такой:…
Как Apple и другие крупные компании настиг программный баг

Дата: 09 Ноя 2022

Автор: Ульяна Гришина

Сегодня мы отобрали свежие случаи программных ошибок, чтобы вы могли немного отвлечься и, возможно, узнать что-то новенькое. Если вам интересно узнать, как программисту удалось сломать Интернет по вс…
Единороги компании PVS-Studio

Дата: 30 Авг 2022

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

Скорее всего вы перешли на эту статью, заинтересовавшись одним из наших рисунков единорогов. Приятно видеть ваш интерес. Сейчас мы расскажем, почему рисуем этих единорогов, что они означают и чем воо…

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

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