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Докладніше процес установки описаний у розділі «»документації. Там же ви можете знайти інформацію про системи, не засновані на Debian.
Після встановлення необхідно ввести ліцензійні дані. Для цього використовується команда
pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE]Де ІМ'Я и KEY – ім'я, на яке зареєстровано ліцензію, та ліцензійний ключ. Необов'язковий параметр -O дозволяє задати шлях, яким буде згенерований файл ліцензії. За умовчанням він зберігається у каталозі ~/.config/PVS-Studio/.
Триальний ключ можна отримати на сторінці «".
Перевірка проектів
Після встановлення аналізатора можна розпочати перевірку проектів. Для цього існують два основні способи:
- Моніторинг компіляції;
- Запуск у процесі збирання безпосередньо із складальної системи.
Розглянемо спочатку перший метод. Щоб запустити моніторинг під 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. Приклади проектів із вже налаштованою інтеграцією ви можете знайти на у репозиторії 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 надає механізми придушення таких попереджень. Для індивідуального придушення спрацьовувань можна застосувати один із способів, описаних у розділі документації «".
Також під час аналізу старого коду може виникнути необхідність масово придушити все повідомлення. Як правило, це потрібно для того, щоб перевіряти лише код, який додається в існуючу кодову базу. Для цього використовується параметр пригнічувати утиліти pvs-studio-analyzer.
Масово придушити повідомлення у звіті можна такою командою:
pvs-studio-analyzer suppress /path/to/report.logІнформація про пригнічені повідомлення зберігається у файлі suppress_base.json, що лежить поруч із проектом. Такі повідомлення виключаються зі звіту під час наступних перевірок.
Докладніше цей механізм описаний у документації .
Висновок
Це було коротке введення використання аналізатора PVS-Studio під Linux. Сподіваюся, воно було корисним і відповіло на питання, що найчастіше виникають. Детальніше про тему статті ви можете прочитати в документації .
Якщо хочете поділитися цією статтею з англомовною аудиторією, прошу використати посилання на переклад: Yuri Minaev. .
Джерело: habr.com
