Tech, World news, Мир IT

Использование статического анализатора PVS-Studio при разработке для встраиваемых систем на C и C++

Из этой статьи вы узнаете, как запустить проверку embedded-проекта и как работать с отчетом анализатора. Анализатор PVS-Studio поддерживает ряд компиляторов для встраиваемых систем. В текущей версии возможна проверка проектов при сборке одним из следующих компиляторов под Window, Linux и macOS:

  • IAR Embedded Workbench
  • Keil Embedded Development Tools for Arm
  • TI ARM Code Generation Tools
  • GNU Embedded Toolchain

Установка

Процедура установки зависит от операционной системы, под которой вы ведете разработку. Под 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:

brew install viva64/pvs-studio/pvs-studio
brew upgrade pvs-studio

Второй вариант – установить из dmg пакета или вручную распаковать из архива.

Под Windows установка производится с помощью инсталлятора:

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

Проверку проектов для embedded систем можно производить теми же способами, что и в случае с разработкой под Windows, Linux и macOS.

Имейте в виду, что так как для сборки под 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.

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

Чтобы посмотреть отчет под Linux, нужно сконвертировать полученный в результате работы анализатора файл в один из поддерживаемых форматов с помощью утилиты plog-converter. Получить отчет в формате HTML с возможностью просмотра исходного кода можно следующей командой:

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

Под Windows также существует утилита PlogConverter, которая позволяет конвертировать файлы отчетов аналогичным образом:

PlogConverter.exe <path>\out.plog --renderTypes= FullHtml --analyzer=GA:1,2

или

PlogConverter.exe D:\Projct\out.plog -t FullHtml -a GA:1,2

Также отчет в формате plog можно посмотреть с помощью утилиты “C and C++ Compiler Monitoring UI” через меню File->Open PVS-Studio Log…

Пример:

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

Стандарт MISRA

Использования правил 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“:

Добавить комментарий