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

Знайомство зі статичним аналізатором PVS-Studio розробки C++ програм у середовищі LinuxPVS-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]

Де ІМ'Я и KEY – ім'я, на яке зареєстровано ліцензію, та ліцензійний ключ. Необов'язковий параметр -O дозволяє задати шлях, яким буде згенерований файл ліцензії. За умовчанням він зберігається у каталозі ~/.config/PVS-Studio/.

Триальний ключ можна отримати на сторінці «Завантажити та спробувати PVS-Studio".

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

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

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

Розглянемо спочатку перший метод. Щоб запустити моніторинг під Linux, знадобиться утиліта страйк. Аналізатор використовує її для збирання інформації про те, які процеси запускалися під час складання проекту.

Запуск здійснюється наступною командою:

pvs-studio-analyzer trace -- make

У цьому прикладі використовується складання за допомогою make, але на місці виклику make може стояти будь-яка інша команда, яку ви використовуєте, щоб розпочати складання. Параметри командного рядка можна передати звичайним способом.

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

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

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

Окрім використання strace, аналіз також можна запустити на основі файлу compile_commands.json (JSON Compilation Database). Багато систем збирання дозволяють експортувати команди викликів компілятора, або ви можете скористатися для цього утилітою ВЕДМІДЬ. Запустити аналіз у цьому випадку можна командою

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

Слід зазначити, що аналізатор розпізнає компілятор, що використовується на ім'я його виконуваного файлу. Якщо під час перевірки ви отримуєте помилку «No compilation units found», спробуйте вказати ім'я компілятора через параметр -Compiler або -c:

pvs-studio-analyzer analyze -c MyCompiler

Це може знадобитися при крос-компіляції та використанні компіляторів з нестандартними іменами файлів, що виконуються.

Окрім запусків у режимі моніторингу, ви можете інтегрувати аналізатор у вашу збірну систему чи IDE. Приклади проектів із вже налаштованою інтеграцією ви можете знайти на GitHub у репозиторії PVS_Studio:

Більш детальну інструкцію щодо запуску аналізу під Linux дивіться документації.

Робота зі звітами

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

Утиліта підтримує такі формати:

  • xml – зручний формат для додаткової обробки результатів аналізу, що підтримується плагіном для SonarQube;
  • csv – текстовий формат, призначений для представлення табличних даних;
  • errorfile – формат виведення gcc та clang;
  • tasklist – формат помилок, який можна відкрити у QtCreator;
  • html - звіт html з коротким описом результатів аналізу;
  • fullhtml – звіт html із сортуванням результатів аналізу за різними параметрами та навігацією за вихідним кодом.

Для перегляду звіту найбільш зручний формат fullhtml, тому що він дозволяє перейти на рядок вихідного коду, в якому виникло попередження. Наступна команда дозволяє конвертувати звіт аналізатора у цей формат:

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

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

Зверніть увагу на ключ -a. Він дозволяє вказати, які саме попередження мають потрапити до звіту. Це зручно, якщо необхідно відфільтрувати висновок аналізатора. Наведена вище команда створить звіт, який міститиме лише попередження з групи general analysis першого та другого рівнів достовірності (Високий и Medium).

Приклад звіту:

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

На кліку в осередку Місце проведення повідомлення можна перейти до відповідного рядка коду:

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

Клік за номером діагностики у колонці код відкриє документацію із описом цієї діагностики.

Придушення спрацьовувань аналізатора

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

Також під час аналізу старого коду може виникнути необхідність масово придушити все повідомлення. Як правило, це потрібно для того, щоб перевіряти лише код, який додається в існуючу кодову базу. Для цього використовується параметр пригнічувати утиліти pvs-studio-analyzer.

Масово придушити повідомлення у звіті можна такою командою:

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

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

Докладніше цей механізм описаний у документації тут.

Висновок

Це було коротке введення використання аналізатора PVS-Studio під Linux. Сподіваюся, воно було корисним і відповіло на питання, що найчастіше виникають. Детальніше про тему статті ви можете прочитати в документації тут.

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

Якщо хочете поділитися цією статтею з англомовною аудиторією, прошу використати посилання на переклад: Yuri Minaev. Getting Started with the PVS-Studio Static Analyzer for C++ Development under Linux.

Джерело: habr.com

Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери 🔥 Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери | ProHoster