- PVSM.RU - https://www.pvsm.ru -
Из этой статьи вы узнаете, как запустить проверку embedded-проекта и как работать с отчетом анализатора. Анализатор PVS-Studio поддерживает ряд компиляторов для встраиваемых систем. В текущей версии возможна проверка проектов при сборке одним из следующих компиляторов под Window, Linux и macOS:
Процедура установки зависит от операционной системы, под которой вы ведете разработку. Под 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
или
sudo gdebi pvs-studio-VERSION.deb
Под macOS установку и обновление можно произвести из Homebrew [5]:
brew install viva64/pvs-studio/pvs-studio
brew upgrade pvs-studio
Второй вариант – установить из dmg пакета или вручную распаковать из архива.
Под Windows установка производится с помощью инсталлятора:
Скачать установочные пакеты для всех поддерживаемых систем и при необходимости запросить триальный ключ вы можете на странице "Скачать и попробовать PVS-Studio [6]".
После установки следует ввести лицензионный ключ. Вы можете найти информацию о том, как это сделать на разных платформах, на странице документации "Как ввести лицензию PVS-Studio, и что делать дальше [7]".
Проверку проектов для embedded систем можно производить теми же способами, что и в случае с разработкой под Windows, Linux и macOS.
Варианты запуска под Linux рассмотрены в статье "Знакомство со статическим анализатором PVS-Studio при разработке C++ программ в среде Linux [8]". Имейте в виду, что так как для сборки под embedded используется кросс-компиляция, и имя компилятора может быть нестандартным, вам может понадобиться указать его при анализе проекта. Для этого используется параметр командной строки –compiler или –c:
pvs-studio-analyzer analyze -c MyCompiler
Применять этот параметр следует в том случае, когда анализатор не может определить тип используемого компилятора, то есть когда выдается ошибка «No compilation units found».
При кросс-компиляции, так как целевая платформа отличается от той, под которой происходит сборка, вместе с компилятором вам может потребоваться указать целевую платформу с помощью параметра --platform, а также тип препроцессора (--preprocessor).
Поддерживаемые платформы: win32, x64, linux32, linux64, macos, arm.
Поддерживаемые препроцессоры: gcc, clang, keil.
По умолчанию под Linux выбирается платформа linux64 и препроцессор gcc.
Если вы используете Windows, проверить проект можно в режиме мониторинга компиляции. Для этого нужно запустить утилиту "C and C++ Compiler Monitoring UI", которая устанавливается вместе с анализатором. Чтобы запустить мониторинг, зайдите в меню Tools и нажмите Analyze Your Files... Откроется диалог:
Нажмите на кнопку "Start Monitoring" и запустите сборку. После ее завершения нажмите на кнопку "Stop Monitoring" в диалоговом окне в правом нижнем углу экрана:
Результат проверки можно посмотреть в основном окне утилиты "C and C++ Compiler Monitoring UI".
Также анализ можно запустить из командной строки. Для этого используется утилита CLMonitor. Запустить мониторинг можно командой:
CLMonitor.exe monitor
После завершения сборки следует запустить утилиту в режиме анализа:
CLMonitor.exe analyze -l "<path>out.plog"
Анализатор проверит проект и сохранит результаты в файл, указанный в параметре -l.
Смотрите также раздел документации "Система мониторинга компиляции в PVS-Studio [9]".
Чтобы посмотреть отчет под Linux, нужно сконвертировать полученный в результате работы анализатора файл в один из поддерживаемых форматов с помощью утилиты plog-converter. Получить отчет в формате HTML с возможностью просмотра исходного кода можно следующей командой:
plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir
Более подробно конвертация отчетов описана в статье "Знакомство со статическим анализатором PVS-Studio при разработке C++ программ в среде Linux [8]".
Под Windows также существует утилита PlogConverter, которая позволяет конвертировать файлы отчетов аналогичным образом:
PlogConverter.exe <path>out.plog --renderTypes= FullHtml --analyzer=GA:1,2
или
PlogConverter.exe D:Projctout.plog -t FullHtml -a GA:1,2
Также отчет в формате plog можно посмотреть с помощью утилиты "C and C++ Compiler Monitoring UI" через меню File->Open PVS-Studio Log...
Пример:
В случае необходимости из этой утилиты можно экспортировать отчет в один из поддерживаемых форматов через меню File.
PVS-Studio классифицирует предупреждения согласно CWE [10] и SEI CERT [11], что подходит для статического тестирования защищенности (SAST [12]) обычных приложений. Однако у встраиваемых систем несколько другие требования к безопасности, которые покрывает специально разработанный стандарт MISRA [13]. Текущая версия анализатора поддерживает часть правил из MISRA C и MISRA C++, список диагностик можно посмотреть здесь [14], и он постоянно расширяется.
Использования правил MISRA при проверке проектов, не предназначенных для embedded, чаще всего неоправданно. Это связано со спецификой стандарта. В большинстве случаев, если код изначально не писался с расчетом на соответствие MISRA, при проверке будет много ложных и бесполезных предупреждений. Поэтому правила MISRA по умолчанию отключены.
Чтобы включить анализ MISRA под Linux, нужно запустить анализ с ключом -a и передать числовой параметр, который задаст необходимый режим. Этот параметр представляет собой комбинацию битовых полей:
-a [MODE], --analysis-mode [MODE]
MODE defines the type of warnings:
1 - 64-bit errors;
2 - reserved;
4 - General Analysis;
8 - Micro-optimizations;
16 - Customers Specific Requests;
32 - MISRA.
Modes can be combined by adding the values
Default: 4
Пример запуска (включены диагностики GA и MISRA):
pvs-studio-analyzer analyze -a 36 -o /path/report.log
При использовании plog-converter также нужно указать, что диагностики MISRA должны попасть в отчет:
plog-converter -a MISRA:1,2,3 -m misra ....
Под Windows можно использовать диалог настроек утилиты "C and C++ Compiler Monitoring UI":
Более подробно о поддержке MISRA рассказано в статье "PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++ [15]".
В этой статье мы обзорно рассмотрели возможности анализатора PVS-Studio для проверки проектов, ориентированных на встраиваемые системы. Если вам нужна более подробная информация о том, как использовать анализатор, рекомендую почитать следующие статьи:
Автор: Юрий Минаев
Источник [19]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-3/326793
Ссылки в тексте:
[1] IAR Embedded Workbench: https://www.iar.com/
[2] Keil Embedded Development Tools for Arm: http://www.keil.com/
[3] TI ARM Code Generation Tools: http://www.ti.com/
[4] GNU Embedded Toolchain: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm
[5] Homebrew: https://brew.sh/
[6] Скачать и попробовать PVS-Studio: https://www.viva64.com/ru/pvs-studio-download/
[7] Как ввести лицензию PVS-Studio, и что делать дальше: https://www.viva64.com/ru/m/0046/
[8] Знакомство со статическим анализатором PVS-Studio при разработке C++ программ в среде Linux: https://www.viva64.com/ru/b/0652/
[9] Система мониторинга компиляции в PVS-Studio: https://www.viva64.com/ru/m/0031/
[10] CWE: https://www.viva64.com/ru/cwe/
[11] SEI CERT: https://www.viva64.com/ru/cert/
[12] SAST: https://www.viva64.com/ru/sast/
[13] MISRA: https://www.misra.org.uk/
[14] здесь: https://www.viva64.com/ru/w/#MISRA
[15] PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++: https://www.viva64.com/ru/b/0596/
[16] Знакомство со статическим анализатором кода PVS-Studio: https://www.viva64.com/ru/m/0007/
[17] Как запустить PVS-Studio в Linux и macOS: https://www.viva64.com/ru/m/0036/
[18] Подавление ложных предупреждений: https://www.viva64.com/ru/m/0017/
[19] Источник: https://habr.com/ru/post/463335/?utm_source=habrahabr&utm_medium=rss&utm_campaign=463335
Нажмите здесь для печати.