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

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

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

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

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

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

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


Если вы так и не получили ответ, пожалуйста, проверьте папку
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++).

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

Популярные статьи по теме
Главный вопрос программирования, рефакторинга и всего такого

Дата: 14 Апр 2016

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

Вы угадали, ответ - "42". Здесь приводится 42 рекомендации по программированию, которые помогут избежать множества ошибок, сэкономить время и нервы. Автором рекомендаций выступает Андрей Карпов - тех…
PVS-Studio ROI

Дата: 30 Янв 2019

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

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Зло живёт в функциях сравнения

Дата: 19 Май 2017

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

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

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

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

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

Краткое описание технологий, используемых в инструменте PVS-Studio, которые позволяют эффективно обнаруживать большое количество паттернов ошибок и потенциальных уязвимостей. Статья описывает реализа…
Любите статический анализ кода!

Дата: 16 Окт 2017

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

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

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

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

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

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

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

В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализат…
Эффект последней строки

Дата: 31 Май 2014

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

Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого …

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

Следующие комментарии

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