Статический анализ кода linux

Знакомство со статическим анализатором PVS-Studio при разработке C++ программ в среде Linux

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 \ https://files.viva64.com/etc/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-analyzer credentials NAME KEY [-o LIC-FILE]

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

Триальный ключ вы можете получить на странице «Скачать и попробовать PVS-Studio».

Проверка проектов

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

Запуск производится следующей командой:

pvs-studio-analyzer trace -- make

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

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

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

На выходе получится закодированный файл с результатами, который вы можете сконвертировать в один из поддерживаемых форматов. Работу с отчетами мы рассмотрим в следующем разделе.

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

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

Следует отметить, что анализатор распознает используемый компилятор по имени его исполняемого файла. Если при проверке вы получаете ошибку «No compilation units found», попробуйте указать имя вашего компилятора через параметр –compiler или –c:

pvs-studio-analyzer analyze -c MyCompiler

Это может понадобиться при кросс-компиляции и использовании компиляторов с нестандартными именами исполняемых файлов.

Читайте также:  Arm64 linux что это

Кроме запусков в режиме мониторинга, вы можете интегрировать анализатор в вашу сборочную систему или IDE. Примеры проектов с уже настроенной интеграцией вы можете найти на GitHub в репозитории PVS_Studio:

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

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

Утилита поддерживает следующие форматы:

  • xml – удобный формат для дополнительной обработки результатов анализа, поддерживается плагином для SonarQube;
  • csv – текстовый формат, предназначенный для представления табличных данных;
  • errorfile – формат вывода gcc и clang;
  • tasklist – формат ошибок, который можно открыть в QtCreator;
  • html – отчет html с кратким описанием результатов анализа;
  • fullhtml – отчет html с сортировкой результатов анализа по разных параметрам и навигацией по исходному коду.
plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir

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

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

Picture 9

По клику в ячейке Location сообщения можно перейти к соответствующей строке кода:

Picture 8

Клик по номеру диагностики в колонке Code откроет документацию с описанием этой диагностики.

Подавление срабатываний анализатора

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

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

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

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

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

Подробнее этот механизм описан в документации здесь.

Заключение

Это было краткое введение в использование анализатора PVS-Studio под Linux. Надеюсь, оно было полезным и ответило на наиболее часто возникающие вопросы. Более подробно о теме статьи вы можете прочитать в документации здесь.

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Yuri Minaev. Getting Started with the PVS-Studio Static Analyzer for C++ Development under Linux.

Источник

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

PVS-Studio supports analyzing projects developed in C, C++, C#, and Java. You can use the analyzer under Windows, Linux, and macOS. This small article will tell you the basics of analyzing C and C++ code in Linux environment.

Читайте также:  Simply linux установка kde

Installation

There are different ways to install PVS-Studio under Linux, depending on your distro type. The most convenient and preferred method is to use the repository, since it allows auto-updating the analyzer upon releasing new versions. Another option is to use the installation package, which you can get here.

The installation commands differ depending on the Linux distro you are using. For instance, this is how installation from the repository under Debian-based systems looks like:

wget -q -O - https://files.viva64.com/etc/pubkey.txt | sudo apt-key add - sudo wget -O /etc/apt/sources.list.d/viva64.list \ https://files.viva64.com/etc/viva64.list sudo apt update sudo apt install pvs-studio

To install PVS-Studio from the downloadable package, you can use the gdebi utility:

sudo gdebi pvs-studio-VERSION.deb

The installation process is described in greater detail in the «Installing and updating PVS-Studio on Linux» documentation section. You can also find information on non-Debian systems there.

Once PVS-Studio is installed, you need to enter license data. Here’s the command for that:

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

NAME and KEY are the registered user name, and the license key respectively. The optional parameter –o allows you to specify the location, where a license file will be generated. By default, it will be stored in the ~/.config/PVS-Studio/ directory.

If you need a trial key, you can get it at the «Download and evaluate PVS-Studio» page.

Checking your project

Once you get the analyzer installed, you can start checking projects. There are two main ways to do this:

Use the command below to initiate the build:

pvs-studio-analyzer trace -- make

Here, make is used, but any other command that you’re running to build your project can be in its place. If needed, you can pass command-line parameters to it in the usual way.

After the build, strace will create a file, which the analyzer will then use to check the source code. To start the analysis, use the command below.

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

As a result, an encoded log file will be generated, which you can convert to one of supported formats. We’ll talk about working with reports later.

Besides strace, you can base the analysis on the compile_commands.json (JSON Compilation Database) file. Many build systems have built-in means of exporting compilation commands, or you could use the BEAR utility to do this. Here’s the command to launch the analysis in this case:

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

Note that the analyzer recognizes the compiler, used in the build process, by its executable name. If you get the «No compilation units found» error whilst attempting to analyze your project, try explicitly specifying the name of your compiler via the –compiler or –c command-line key:

pvs-studio-analyzer analyze -c MyCompiler

You may need this if you’re using cross-compilation, or if your compiler has a non-standard executable name.

Читайте также:  Удалить репозиторий linux centos

Besides monitoring mode, you can integrate the analyzer directly into your build system or IDE. Our official GitHub repository provides example projects where the integration has already been configured:

Working with reports

After checking a project, the analyzer creates an encoded report. To convert it to one of supported formats, you need to use the plog-converter utility, which comes with the PVS-Studio installation.

Here’s a list of supported formats:

  • xml-a convenient format for further processing of the results of the analysis, which is supported supported by the plugin for SonarQube;
  • csv — file stores tabular data (numbers and text) in plain text;
  • errorfile is the output format of the gcc and clang;
  • tasklist — an error format that can be opened in QtCreator;
  • html — html report with a short description of the analysis results;
  • fullhtml — report with sorting of the analysis results according to the different parameters and navigation along the source code.
plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir

When you launch it, a newly created directory named /path/report_dir will contain all the report files.

Pay attention to the -a parameter. It allows you to specify, which warnings should appear in the resulting report. It is convenient if you need to filter the analyzer’s output. The above command will create a report, which will contain only general analysis messages of the first and second certainty levels (High and Medium).

Picture 9

By clicking within a message’s Location cell, you can jump to the corresponding line of code:

Picture 8

By clicking the diagnostic code in the Code column, you can open documentation on this diagnostic.

Suppressing analyzer warnings

When using any static analyzer to check source code, you might get false positives, or simply undesirable noise warnings. PVS-Studio has means of suppressing such messages. To target individual warnings, you can use one of the methods described in the «Suppression of false alarms» documentation article.

Also, when checking old code you might want to suppress all warnings. As a rule, you may need this if you only want to check new code that you add to an existing codebase. To do this, use the suppress parameter of the pvs-studio-analyzer utility.

You can mass-suppress warnings in a report by using this command:

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

Information on suppressed warnings is stored in a file named suppress_base.json, which is located next to the project. Such messages are excluded from reports on subsequent checks.

This mechanism is described in detail here.

Conclusion

This was a brief introduction into using PVS-Studio under Linux. I hope it was useful and managed to answer the most frequent questions. If you need more information on the topic of this article, refer to documentation here.

Источник

Оцените статью
Adblock
detector