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

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

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

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

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

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

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


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

>
>
PVS-Studio 7.08

PVS-Studio 7.08

PVS-Studio - это инструмент для поиска ошибок в коде программ на языке C, C++, C#, Java. В релиз PVS-Studio 7.08 вошло много нового и интересного: C# анализатор, в дополнении к работе на ОС семейства Windows, теперь работает также на Linux и macOS; появился вывод результатов анализа в формате TeamCity; поддержана система Perforce в утилите автоматического оповещения разработчиков; появился плагин для среды разработки JetBrains Rider; в Java анализаторе PVS-Studio добавлена возможность поиска проблем совместимости Java SE API. Рассмотрим в статье эти нововведения более подробно.

0745_Release_7_08_ru/image1.png

C# анализатор для Linux и macOS

В конце апреля мы запустили бета-тестирование C# анализатора для Linux и macOS. И достаточно успешно его провели – собрали фидбек, внесли ряд улучшений и исправлений.

И вот теперь, наконец, мы делаем релиз, в который вошёл C# анализатор для Linux и macOS! Таким образом, теперь C# анализатор, равно как C, C++, Java анализаторы, доступен под всеми поддерживаемыми PVS-Studio платформами - Windows, Linux и macOS.

Command-line утилита для анализа C# проектов под Linux \ macOS носит название pvs-studio-dotnet. Особенности установки и использования анализатора описаны в соответствующих разделах документации:

Плагин PVS-Studio для IDE JetBrains Rider

Параллельно с разработкой и тестированием C# анализатора под Linux и macOS мы также вели разработку плагина PVS-Studio для JetBrains Rider. И не менее радостно сообщить, что он также вошёл в релиз и доступен под всеми поддерживаемыми платформами: Windows, Linux, macOS.

Более подробно установка и использование плагина описывается в разделе документации "Работа PVS-Studio в JetBrains Rider".

Новый режим анализа pull requests \ merge requests \ commits

В Windows версии анализатора, в command line утилите PVS-Studio_Cmd, добавлен новый режим работы проверки заданного списка файлов, полезный для настройки автоматической проверки pull \ merge request'ов и коммитов.

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

Во-первых, в случае анализа как C++, так и C# проектов, для указания списка файлов на анализ (через флаг --sourceFiles) требовался XML файл. Т.е. его нужно было специальным образом формировать из списка файлов в PR, MR, commit'е, а это – какой-никакой дополнительный шаг.

Во-вторых, если было нужно анализировать исходные файлы на основе .h файлов (поменяли .h файл, нужно проанализировать все исходные файлы, куда он включался явно или косвенно), требовалось наличие артефактов сборочной системы (tlog-файлов), которые предварительно нужно было получить, проводя сборку проверяемого проекта.

Теперь использовать этот режим стало намного проще и удобнее – не нужны ни tlog файлы, ни специальные XML файлы. Достаточно просто использовать всё тот же флаг --sourceFiles, в который нужно передать простой текстовый файл со списком файлов на анализ. И всё, никаких tlog файлов! Для решения задачи хранения зависимостей анализатор теперь создаёт специальный кэш зависимостей между заголовочными и исходными файлами, вместо использования tlog файлов, что намного упрощает данный режим использования.

Более подробно данный режим описан в подразделе "Задание отдельных файлов для проверки" раздела документации "Проверка проектов Visual Studio / MSBuild / .NET Core из командной строки с помощью PVS-Studio".

Прочие улучшения и нововведения

  • В утилитах PVS-Studio_Cmd и pvs-studio-dotnet появилась возможность передавать .pvsconfig-файлы через аргументы командной строки (--rulesConfig (-C)).
  • В plog-converter (утилита конвертации логов на Linux, macOS ) был добавлен формат вывода для TeamCity. В прошлом релизе этот формат вывода был добавлен в PlogConverter для Windows.
  • Нами было проаннотировано множество методов из библиотек Unity, что позволит C# анализатору иметь больше информации об этих методах, и как следствие – проводить более точный анализ Unity проектов.
  • В утилиту автоматического оповещения разработчиков blame-notifier добавлена поддержка новой системы контроля версий - Perforce. Таким образом, теперь blame-notifier умеет работать со следующими VCS: Git, SVN, Mercurial, Perforce. Кроме того, для Perforce добавлен режим автоматического получения списка получателей отчётов.
  • В Unreal Engine 4.25 появилась возможность использования различных групп диагностических правил PVS-Studio (ранее была доступна только группа "General Analysis"). О том, как включать различные группы диагностик, написано в соответствующем разделе документации.

Новые диагностические правила

Добавлено девять диагностических правил. Среди них, диагностика V6078 явно заслуживает больше внимания, и мы рассмотрим её отдельно в следующем разделе.

C, C++:

  • V824. It is recommended to use the 'make_unique/make_shared' function to create smart pointers.
  • V825. Expression is equivalent to moving one unique pointer to another. Consider using 'std::move' instead.
  • V1056. The predefined identifier '__func__' always contains the string 'operator()' inside function body of the overloaded 'operator()'.
  • V1057. Pseudo random sequence is the same at every program run. Consider assigning the seed to a value not known at compile-time.
  • V1058. Nonsensical comparison of two different functions' addresses.

Java:

  • V6078. Potential Java SE API compatibility issue.
  • V6079. Value of variable is checked after use. Potential logical error is present. Check lines: N1, N2.
  • V6080. Consider checking for misprints. It's possible that an assigned variable should be checked in the next condition.
  • V6081. Annotation that does not have 'RUNTIME' retention policy will not be accessible through Reflection API.

V6078 - Potential Java SE API compatibility issue

Доклад Dalia Abo Sheasha "Migrating beyond Java 8", услышанный нами на осенней конференции Joker 2019, вдохновил нас на реализацию нового диагностического правила, которое позволяет выявлять несовместимости в Java SE API между разными версиями Java.

На текущей момент уже вышла Java SE 14. Несмотря на это, многие компании продолжают использовать прежние версии Java (Java SE 6, 7, 8, ...). В связи с тем, что время идет, и Java все время обновляется, проблема совместимости различных версий Java SE API с каждым годом становится все актуальней.

Когда выходят новые версии Java SE, то они, как правило, обратно совместимы с более ранними версиями, то есть, например, приложение, разработанное на основе Java SE 8, должно без проблем запуститься на 11 версии Java. Однако на практике может возникать некоторая несовместимость в ряде классов и методов. Эта несовместимость заключаются в том, что некоторые API претерпевают изменения: удаляются, меняются в поведении, помечаются как устаревшие и многое другое.

Эта проблема только обострится, когда вы начнете задумываться о миграции своего проекта на более свежую Java SE. Или же когда в техническую поддержку вашего приложения будут все чаще и чаще приходить письма о том, что приложение некорректно себя ведет или вообще не может запуститься.

Чтобы помочь с решением этой проблемы, мы добавили в анализатор "большое" диагностическое правило V6078. Более подробно история разработки диагностики представлена в статье "Анализатор PVS-Studio: выявления потенциальных проблем совместимости Java SE API".

P.S. Compiler Explorer (godbolt.org)

Почти одновременно с выходом релиза мы подружили PVS-Studio с Compiler Explorer. Конечно, к релизу это не имеет прямого отношения, но хочется ещё раз рассказать тем, кто пропустил эту новость.

Благодаря проекту Compiler Explorer вы можете быстро подготовить синтетические примеры C и C++ кода, и посмотреть, как на них поведёт себя анализатор PVS-Studio.

Посмотреть и попробовать: Online-примеры (C, C++).

Дополнительные ссылки

Популярные статьи по теме
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. Для стандарта …
PVS-Studio 7.15: развитие MISRA, CWE, OWASP, Unreal Engine

Дата: 11 Окт 2021

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

Инструмент PVS-Studio активно развивается в сторону выявления дефектов Safety и Security направленности. А именно: улучшается поддержка стандартов MISRA C:2012 и OWASP ASVS. Поддержан стандарт MISRA …
PVS-Studio 7.14: межмодульный анализ в С++ и плагин для JetBrains CLion

Дата: 16 Авг 2021

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

Помимо увеличения количества диагностик с каждым новым релизом анализатор PVS-Studio развивается и в инфраструктурном плане. В данном случае это плагин для среды разработки JetBrains CLion, межмодуль…

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

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