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

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

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

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

  • C ++. V821. Переменная может быть построена в области более низкого уровня.
  • C ++. V1001. Переменная назначается, но не используется до конца функции.
  • C #. V3135. Начальное значение индекса во вложенном цикле равно i. Вместо этого рассмотрите возможность использования i + 1.
  • C #. V3136. Постоянное выражение в операторе switch.
  • C #. V3137. Переменная назначается, но не используется до конца функции.

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

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

Также в дистрибутив был добавлен плагин, который позволяет отображать результаты анализа в системе непрерывной интеграции 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, и надеюсь, что они были интересными. Если вы пропустили информацию об их публикациях, предлагаю пройти по ссылкам и ознакомиться с этими статьями: