>
>
Полезные новшества в очередном релизе P…

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

Полезные новшества в очередном релизе PVS-Studio 6.17

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

Мы продолжаем развивать наш анализатор в направлении Linux. Другими словами, Linux версия догоняет по возможностям Windows версию анализатора. Очередным шагом стала реализация плагина для системы непрерывного контроля качества SonarQube и добавление режима массового подавления предупреждений для Linux. Более подробную информацию вы можете получить, обратившись к разделам документации "Интеграция результатов анализа PVS-Studio в SonarQube" и "Как запустить PVS-Studio в Linux".

В command line модуле PVS-Studio_Cmd.exe был добавлен новый режим инкрементального анализа - "AppendScan". Использование этого режима позволит "накапливать" информацию о том, какие файлы необходимо проанализировать. Таким образом, вам становится доступно ещё большее количество вариантов проведения анализа, что позволит лучше настроить анализатор под нужды проекта. Более подробно про это написано в статье "Режим инкрементального анализа PVS-Studio".

Добавлено несколько новых диагностик, но ничего примечательного:

  • C++. V821. The variable can be constructed in a lower level scope.
  • C++. V1001. The variable is assigned but is not used until the end of the function.
  • C#. V3135. The initial value of the index in the nested loop equals 'i'. Consider using 'i + 1' instead.
  • C#. V3136. Constant expression in switch statement.
  • C#. V3137. The variable is assigned but is not used until the end of the function.

Намного интересней, что существенной переработке подвергся механизм виртуальных значений в ядре C++ анализатора. Например, теперь анализатор осуществляет двойной проход по циклам, что позволяет ему более точно определять диапазон возможных значений переменных, изменяемых в цикле. Поэтому не удивляйтесь, если анализатор начнёт выдавать много предупреждений для кода, на котором он раньше молчал. Рекомендуем обязательно обновить версию анализатора, так как вы сможете найти новые ошибки.

Ещё одно интересное новшество - возможность заставить С++ анализатор считать, что функция malloc не может вернуть NULL. Некоторые программисты не хотят рассматривать ситуацию, когда malloc вернёт нулевой указатель. Поэтому указатели используется без предварительной проверки и, как следствие, анализатор PVS-Studio выдаёт много предупреждений. Разработчики рассматривают это как ложные срабатывания и попросили возможность изменять поведение анализатора. Пример такого подхода описан в статье "Характеристики анализатора PVS-Studio на примере EFL Core Libraries". Для настройки поведения анализатора используются специальные комментарии, которые описаны в разделе "Дополнительная настройка диагностик".

Также в состав дистрибутива был добавлен плагин, позволяющий отображать результаты анализа в системе непрерывной интеграции Jenkins (пока доступен на Windows). Это позволит более наглядно следить за количеством потенциально опасных мест в проекте. Более подробно использование плагина для Jenkins описано в статье "Встраивание PVS-Studio в процесс непрерывной интеграции" в разделе "Плагин PVS-Studio для Jenkins".

Другие усовершенствования:

  • Добавлена возможность сохранять отчёт работы анализатора из Visual Studio плагина и Standalone в форматах txt\csv\html, без необходимости вручную вызывать PlogConverter.
  • Лицензия и файл настроек теперь сохраняются в кодировке UTF-8. Для совместимости анализатор поддерживает файлы в формате UTF-16, который мы использовали ранее.
  • Добавлен список недавно открытых логов в меню Visual Studio плагина.
  • Поддержка обновления Visual Studio 2017 15.3.

Скачивайте и пробуйте новую версию анализатора! Также, пользуясь случаем, хочу напомнить, что мы написали цикл статей, посвященных проверке кода операционной системы Tizen и, надеюсь, что они получились интересными. Если вы пропустили информацию об их публикации, предлагаю перейти по ссылкам и познакомиться с этими статьями: