Традиционно сложилось, что основной средой разработки для работы с анализатором PVS-Studio была среда Visual Studio от Microsoft. Наш анализатор начинал свой путь на Windows, поэтому выбор Visual Studio был вполне оправданным и очевидным. Тем не менее, более чем за 10 лет развития PVS-Studio анализатор стал доступен для нескольких других языков и платформ, поэтому вполне естественно, что в нашей поддержке всё больше людей спрашивают о возможности интеграции PVS-Studio с их любимой IDE.
Год назад, 18 июня 2020 года, состоялся первый релиз плагина PVS-Studio для среды разработки JetBrains Rider. Этот релиз был приурочен к одновременному выходу анализатора PVS-Studio для C# на платформах Linux и macOS.
Сегодня же мы рады объявить о начале публичного beta-тестирования плагина для другой IDE от JetBrains — CLion. Мы верим, что данное нововведение значительно улучшит опыт работы с нашим продуктом для Linux и кроссплатформенных С++ пользователей. По результатам прохождения beta-тестов мы надеемся выпустить первую версию плагина CLion в предстоящем релизе PVS-Studio 7.14, в последних числах июля — начале августа.
Для полноценного тестирования плагина необходимо инсталлировать саму бета-версию плагина и бета-версию ядра C++ анализатора. Плагин можно установить несколькими способами: из официального репозитория, из репозитория на нашем сайте или с помощью Windows установщика PVS-Studio — далее мы расскажем, как это сделать.
После установки плагина и анализатора вы можете зарегистрироваться на beta-тест PVS-Studio for CLion на нашей странице раннего доступа, вам на почту придёт пробный ключ для анализатора.
Подробную документацию по установке и работе с плагинами PVS-Studio для CLion и Rider можно найти здесь, а мы дальше приведём краткую инструкцию по установке и первому запуску PVS-Studio в CLion.
Цель любого beta-теста — сбор отзывов пользователей о новом продукте, удобстве его использования и, конечно, неизбежных багах, которые всегда присутствуют в ранних версиях. Данный beta-тест не исключение. Если вы столкнулись с одной из таких ошибок или просто хотите поделиться своими впечатлениями о новом плагине PVS-Studio, обязательно напишите нам в ответ на письмо, пришедшее после регистрации на beta-тесте или свяжитесь с нами с помощью нашей формы обратной связи.
Для этого нужно запустить CLion и далее File->Settings->Plugins, выбрать вкладку Marketplace, а в строке поиска ввести 'PVS-Studio'. Далее установить плагин PVS-Studio for CLion.
Этот пункт аналогичный предыдущему, но сначала надо настроить CLion для нового репозитория. Для этого перейдите в File->Settings->Plugins, нажмите на "шестерёнку" в правой части окна и в выпадающем меню выберите Manage Plugin Repositories.
В открывшимся окне добавьте путь http://files.pvs-studio.com/java/pvsstudio-clion-plugins/updatePlugins.xml. И нажмите ОК.
Далее устанавливаем плагин аналогично предыдущему пункту.
Если вы используете операционную систему Windows, вы можете установить плагин и ядро анализатора из дистрибутива. Для этого скачайте и запустите инсталлятор отсюда (в таблице в колонке Windows скачайте ".exe" файл установщика).
Для корректной работы PVS-Studio в CLion помимо непосредственно самого плагина требуется установить ядро C++ анализатора. Для этого можно перейти по адресу и скачать дистрибутив для вашей платформы. Если вы установили дистрибутив для Windows, то этот пункт можно пропустить.
Если вы используете операционные системы Linux или macOS, вы также можете воспользоваться следующими командами для установки:
wget -q -O - https://files.pvs-studio.com/beta/etc/pubkey.txt | \
sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64-beta.list \
https://files.pvs-studio.com/beta/etc/viva64.list
sudo apt-get update
sudo apt-get install pvs-studio
wget -O /etc/yum.repos.d/viva64-beta.repo \
https://files.pvs-studio.com/beta/etc/viva64.repo
yum update
yum install pvs-studio
wget -q -O /tmp/viva64-beta.key https://files.pvs-studio.com/beta/etc/pubkey.txt
sudo rpm --import /tmp/viva64-beta.key
sudo zypper ar -f https://files.pvs-studio.com/beta/rpm viva64-beta
sudo zypper update
sudo zypper install pvs-studio
brew install viva64/pvs-studio/pvs-studio-beta
После регистрации в beta-тесте и получения регистрационного ключа для активации лицензии нужно перейти в окно Tools->PVS-Studio->Settings. В открывшемся окне перейти на вкладку Registration.
В полях User Name и Serial Number нужно ввести соответствующие данные лицензии. Ещё раз напоминаем, что получить регистрационный ключ можно здесь: страница раннего доступа.
После установки и настройки плагин будет примерно выглядеть, как показано на рисунке ниже.
Плагин позволяет анализировать CMake проекты, загруженные в CLion, и отдельные выбранные файлы.
Для запуска анализа выберите Tools->PVS-Studio->Check Project.
Для анализа выбранных файлов Tools -> PVS-Studio -> Check Current File.
Результаты анализа можно увидеть в окне PVS-Studio:
В окне можно увидеть таблицу, которая состоит из столбцов c кодом предупреждения, описанием проблемы, позицией и т.д.
При нажатии правой кнопкой мыши на строке с сообщением анализатора в таблице окна PVS-Studio откроется контекстное меню, содержащее дополнительные команды для выбранных сообщений анализатора.
Команда 'Mark selected messages as False Alarms / Remove false alarm masks' позволяет разметить сообщение анализатора как ложное срабатывание, добавив в код, на который выдано предупреждение, комментарий специального вида.
Команда 'Exclude from analysis' позволяет добавить путь или часть пути к файлу, в котором найдено предупреждение анализатора, в список исключённых из анализа директорий. Все файлы, пути до которых попадут под данный фильтр, будут исключены из анализа.
При двойном клике левой кнопкой мыши на строке будет открыт файл на строке, где было найдено предупреждение анализатора.
Для того чтобы открыть окно настроек плагина, зайдите в Tools->PVS-Studio->Settings. Панель настроек плагина состоит из нескольких вкладок. Рассмотрим каждую из них подробнее.
Settings — настройки ядра анализатора PVS-Studio. При наведении курсора мыши на название настройки появляется подсказка с описанием того, для чего эта настройка предназначена.
Warnings — список типов всех предупреждений, поддерживаемых анализатором. Если убрать галочку у предупреждения, то все предупреждения данного типа в таблице вывода результатов работы анализатора будут отфильтрованы:
Excludes — содержит маски для имен файлов и путей, которые будут исключены из анализа.
Очень часто начать регулярно использовать статический анализ мешают многочисленные срабатывания на legacy коде. Такой код обычно уже хорошо оттестирован и стабильно работает, поэтому править в нём все срабатывания анализатора может оказаться нецелесообразно. Тем более, если размер кодовой базы достаточно велик, такая правка может потребовать большого времени. При этом такие сообщения на существующий код мешают смотреть сообщения на код новый, ещё находящийся в разработке.
Чтобы решить данную проблему и начать сразу регулярно использовать статический анализ, PVS-Studio предлагает возможность "отключить" сообщения на старом коде. Чтобы подавить сообщения анализатора на старом коде можно воспользоваться командой главного меню 'Tools -> PVS-Studio -> Suppress All Messages' или кнопкой 'Suppress All Messages' на панели окна PVS-Studio. Механизм подавления работает с помощью специальных suppress файлов, в которые добавляются подавленные сообщения анализатора после выполнения команды 'Suppress All Messages'. При последующем запуске анализа все сообщения, добавленные в такие suppress файлы, не попадут в отчёт анализатора. Система подавления через suppress файлы достаточно гибкая и способна "отслеживать" подавленные сообщения даже при модификации и сдвигах участков кода, в которых выдаётся подавленное сообщение.
В CLion подавленные сообщения добавляются в suppress_base.json, который записывается в директорию .PVS-Studio в корневой директории открытого в CLion проекта. Чтобы вернуть все сообщения в вывод анализатора, необходимо удалить этот файл и перезапустить анализ.
Смотрите также статью "Как внедрить статический анализатор кода в legacy проект и не демотивировать команду".
Для сохранения или загрузки результатов работы анализатора можно воспользоваться командами главного меню, доступными через 'Tools -> PVS-Studio':
Команда 'Open Report' открывает .json файл отчёта и загружает его содержимое в таблицу окна 'PVS-Studio'.
Подменю 'Recent Reports' показывает список из нескольких последних открытых файлов отчётов. При нажатии на элемент в списке будет открыт соответствующий отчёт (если отчёт ещё существует по такому пути) и его содержимое будет загружено в таблицу окна 'PVS-Studio'.
Команда 'Save Report' сохраняет все сообщения из таблицы (даже отфильтрованные) в .json файл отчёта. Если текущий результат анализа ещё ни разу не сохранялся, то будет предложено задать имя и место для сохранения отчёта.
Аналогично команда 'Save Report As' сохраняет все предупреждения из таблицы (даже отфильтрованные) в .json файл отчёта, всегда предлагая выбрать место сохранения отчёта на диске.
Обычно мы рекомендуем регулярно запускать полный анализ, например раз в сутки, ночью. Однако для наибольшего эффекта от использования анализатора можно в дополнение к ночному анализу осуществлять проверку нового кода сразу после его написания. Для этого можно использовать инкрементальный анализ, который работает следующим образом. После того как в проект были внесены изменения, разработчик запускает сборку и после успешного завершения компиляции будет запущен анализ только изменённых файлов. Изменёнными файлами считаются те файлы, которые изменились с момента предыдущего анализа.
Режим инкрементального анализа можно включить или отключить. Для этого надо выбрать опцию Tools->PVS-Studio->Analysis after Build (Modified files only) и далее Enabled или Disabled.
С поддержкой новой IDE JetBrains CLion мы надеемся сделать использование анализатора более удобным для наших C++ пользователей на всех поддерживаемых платформах (Windows, Linux, macOS). И хотя остаётся ещё много сред разработки, в которых нет прямой интеграции PVS-Studio (однако во многих из них можно использовать анализатор с помощью стандартных средств просмотра предупреждений компилятора), мы планируем в будущем наращивать количество IDE, которые мы поддерживаем напрямую.
Исходя из интереса наших пользователей наиболее вероятным следующим кандидатом для такой поддержки будет Visual Studio Code. Пишите нам если вам интересна прямая интеграция нашего анализатора в "вашу" IDE, и, возможно, она тоже появится в наших планах.
Ну и напоследок ещё раз напомню, что вы можете зарегистрироваться для участия в beta-тесте и написать нам через форму обратной связи о найденных проблемах и пожеланиях.
0