Getting Started with the PVS-Studio Static Analyzer for C++ Development under Linux

WILD

Administrator
Staff member
ADMIN
SELLER
SUPREME
MEMBER
Joined
Jan 21, 2025
Messages
220
Reaction score
629
Deposit
0$
PVS-Studio поддерживает анализ проектов, разработанных на C, C++, C# и Java. Вы можете использовать анализатор в Windows, Linux и macOS. В этой небольшой статье мы расскажем об основах анализа кода на C и C++ в среде Linux.


Установка​


Существует несколько способов установки PVS-Studio под Linux, в зависимости от используемого дистрибутива. Наиболее удобный и предпочтительный метод — использование репозитория, поскольку он позволяет автоматически обновлять анализатор при выпуске новых версий. Другой вариант — использование установочного пакета, который можно получить здесь .
Команды установки различаются в зависимости от используемого дистрибутива Linux. Например, в системах на основе Debian установка из репозитория выглядит следующим образом:

wget -q -O - https://files.viva64.com/etc/pubkey.txt | sudo apt-key add -

sudo wget -O /etc/apt/sources.list.d/viva64.list \

sudo apt update
sudo apt install pvs-studio



Для установки PVS-Studio из загружаемого пакета можно использовать утилиту gdebi :

sudo gdebi pvs-studio-VERSION.deb



Процесс установки более подробно описан в разделе документации « Установка и обновление PVS-Studio на Linux ». Там же вы найдете информацию и для систем, отличных от Debian.

После установки PVS-Studio необходимо ввести данные лицензии. Вот команда для этого:

pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE]



NAME и KEY — это зарегистрированное имя пользователя и лицензионный ключ соответственно. Необязательный параметр –o позволяет указать местоположение, где будет сгенерирован файл лицензии. По умолчанию он будет храниться в каталоге ~/.config/PVS-Studio/ .

Если вам нужен пробный ключ, вы можете получить его на странице " Скачать и оценить PVS-Studio ".


Проверка вашего проекта​


После установки анализатора вы можете начать проверку проектов. Для этого есть два основных способа:


  1. Мониторинг компиляции.
  2. Запуск непосредственно из систем сборки.

Давайте поговорим о первом способе. Для запуска мониторинга в Linux вам понадобится утилита strace . PVS-Studio использует её для сбора списка и параметров процессов, запущенных во время сборки.

Для начала сборки используйте приведенную ниже команду:

pvs-studio-analyzer trace -- make



Здесь используется команда `make` , но вместо неё можно использовать любую другую команду, которую вы запускаете для сборки проекта. При необходимости вы можете передать ей параметры командной строки обычным способом.

После сборки strace создаст файл, который анализатор затем будет использовать для проверки исходного кода. Чтобы начать анализ, используйте команду ниже.

pvs-studio-analyzer analyze -o /path/to/project.log



В результате будет сгенерирован закодированный файл журнала, который вы можете преобразовать в один из поддерживаемых форматов. О работе с отчетами мы поговорим позже.

Помимо strace , вы можете использовать для анализа файл compile_commands.json (база данных компиляции в формате JSON). Многие системы сборки имеют встроенные средства для экспорта команд компиляции, или вы можете использовать для этого утилиту BEAR . Вот команда для запуска анализа в этом случае:

pvs-studio-analyzer analyze –f /path/to/compile_commands.json



Обратите внимание, что анализатор распознает компилятор, используемый в процессе сборки, по имени исполняемого файла. Если при попытке анализа проекта вы получаете ошибку «Не найдены модули компиляции», попробуйте явно указать имя компилятора с помощью ключа командной строки –compiler или –c :

pvs-studio-analyzer analyze -c MyCompiler


Работа с отчетами​


После проверки проекта анализатор создает закодированный отчет. Для его преобразования в один из поддерживаемых форматов необходимо использовать утилиту plog-converter , которая входит в состав установки PVS-Studio.

Вот список поддерживаемых форматов:


  • XML — удобный формат для дальнейшей обработки результатов анализа, поддерживаемый плагином для SonarQube ;
  • CSV — файл, хранящий табличные данные (числа и текст) в текстовом формате;
  • errorfile — это формат выходных данных компиляторов gcc и clang;
  • tasklist — формат сообщения об ошибке, который можно открыть в QtCreator;
  • html — HTML-отчет с кратким описанием результатов анализа;
  • fullhtml — отчет с сортировкой результатов анализа по различным параметрам и навигацией по исходному коду.

Формат fullhtml наиболее удобен для просмотра отчета, поскольку позволяет перейти к строке кода, соответствующей интересующему вас предупреждению. Следующая команда позволяет преобразовать отчет в этот формат:

plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir



При запуске будет создана новая директория с именем /path/report_dir , содержащая все файлы отчетов.

Обратите внимание на параметр -a . Он позволяет указать, какие предупреждения должны отображаться в итоговом отчете. Это удобно, если вам нужно отфильтровать вывод анализатора. Приведенная выше команда создаст отчет, который будет содержать только общие аналитические сообщения первого и второго уровней достоверности ( высокий и средний ).

Пример отчета:




Рисунок 9



Щелкнув по ячейке « Местоположение » в сообщении , вы можете перейти к соответствующей строке кода:




Рисунок 8



Щелкнув по диагностическому коду в столбце «Код» , вы можете открыть документацию по этому диагностическому коду.


Подавление предупреждений анализатора​


При использовании любого статического анализатора для проверки исходного кода могут возникать ложные срабатывания или просто нежелательные предупреждения. PVS-Studio предоставляет средства для подавления таких сообщений. Для обработки отдельных предупреждений можно использовать один из методов, описанных в статье документации « Подавление ложных срабатываний ».

Кроме того, при проверке старого кода может потребоваться отключить все предупреждения. Как правило, это может понадобиться, если вы хотите проверить только новый код, добавленный в существующую кодовую базу. Для этого используйте параметр suppress утилиты pvs-studio-analyzer .

С помощью этой команды можно массово подавить все предупреждения в отчете:

pvs-studio-analyzer suppress /path/to/report.log


Информация о подавленных предупреждениях хранится в файле suppress_base.json , расположенном рядом с проектом. Такие сообщения исключаются из отчетов о последующих проверках.
 
Top Bottom