Из этой статьи вы узнаете, как запустить проверку embedded-проекта и как работать с отчетом анализатора. Анализатор PVS-Studio поддерживает ряд компиляторов для встраиваемых систем. В текущей версии возможна проверка проектов при сборке одним из следующих компиляторов под Window, Linux и macOS:
Процедура установки зависит от операционной системы, под которой вы ведете разработку. Под Linux вы можете установить анализатор из репозитория или из установочного пакета.
Пример для систем на основе Debian:
или
Под macOS установку и обновление можно произвести из Homebrew:
Второй вариант – установить из dmg пакета или вручную распаковать из архива.
Под Windows установка производится с помощью инсталлятора:
Скачать установочные пакеты для всех поддерживаемых систем и при необходимости запросить триальный ключ вы можете на странице "Скачать и попробовать PVS-Studio".
После установки следует ввести лицензионный ключ. Вы можете найти информацию о том, как это сделать на разных платформах, на странице документации "Как ввести лицензию PVS-Studio, и что делать дальше".
Проверку проектов для embedded систем можно производить теми же способами, что и в случае с разработкой под Windows, Linux и macOS.
Варианты запуска под Linux рассмотрены в статье "Знакомство со статическим анализатором PVS-Studio при разработке C++ программ в среде Linux". Имейте в виду, что так как для сборки под embedded используется кросс-компиляция, и имя компилятора может быть нестандартным, вам может понадобиться указать его при анализе проекта. Для этого используется параметр командной строки –compiler или –c:
Применять этот параметр следует в том случае, когда анализатор не может определить тип используемого компилятора, то есть когда выдается ошибка «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. Запустить мониторинг можно командой:
После завершения сборки следует запустить утилиту в режиме анализа:
Анализатор проверит проект и сохранит результаты в файл, указанный в параметре -l.
Смотрите также раздел документации "Система мониторинга компиляции в PVS-Studio".
Чтобы посмотреть отчет под Linux, нужно сконвертировать полученный в результате работы анализатора файл в один из поддерживаемых форматов с помощью утилиты plog-converter. Получить отчет в формате HTML с возможностью просмотра исходного кода можно следующей командой:
Более подробно конвертация отчетов описана в статье "Знакомство со статическим анализатором PVS-Studio при разработке C++ программ в среде Linux".
Под Windows также существует утилита PlogConverter, которая позволяет конвертировать файлы отчетов аналогичным образом:
или
Также отчет в формате plog можно посмотреть с помощью утилиты "C and C++ Compiler Monitoring UI" через меню File->Open PVS-Studio Log...
Пример:
В случае необходимости из этой утилиты можно экспортировать отчет в один из поддерживаемых форматов через меню File.
PVS-Studio классифицирует предупреждения согласно CWE и SEI CERT, что подходит для статического тестирования защищенности (SAST) обычных приложений. Однако у встраиваемых систем несколько другие требования к безопасности, которые покрывает специально разработанный стандарт MISRA. Текущая версия анализатора поддерживает часть правил из MISRA C и MISRA C++, список диагностик можно посмотреть здесь, и он постоянно расширяется.
Использования правил MISRA при проверке проектов, не предназначенных для embedded, чаще всего неоправданно. Это связано со спецификой стандарта. В большинстве случаев, если код изначально не писался с расчетом на соответствие MISRA, при проверке будет много ложных и бесполезных предупреждений. Поэтому правила MISRA по умолчанию отключены.
Чтобы включить анализ MISRA под Linux, нужно запустить анализ с ключом -a и передать числовой параметр, который задаст необходимый режим. Этот параметр представляет собой комбинацию битовых полей:
Пример запуска (включены диагностики GA и MISRA):
При использовании plog-converter также нужно указать, что диагностики MISRA должны попасть в отчет:
Под Windows можно использовать диалог настроек утилиты "C and C++ Compiler Monitoring UI":
Более подробно о поддержке MISRA рассказано в статье "PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++".
В этой статье мы обзорно рассмотрели возможности анализатора PVS-Studio для проверки проектов, ориентированных на встраиваемые системы. Если вам нужна более подробная информация о том, как использовать анализатор, рекомендую почитать следующие статьи:
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Yuri Minaev. Using PVS-Studio Static Analyzer in C and C++ Development for Embedded Systems
- 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 установка производится с помощью инсталлятора:
Скачать установочные пакеты для всех поддерживаемых систем и при необходимости запросить триальный ключ вы можете на странице "Скачать и попробовать PVS-Studio".
После установки следует ввести лицензионный ключ. Вы можете найти информацию о том, как это сделать на разных платформах, на странице документации "Как ввести лицензию PVS-Studio, и что делать дальше".
Проверка проектов
Проверку проектов для embedded систем можно производить теми же способами, что и в случае с разработкой под Windows, Linux и macOS.
Варианты запуска под Linux рассмотрены в статье "Знакомство со статическим анализатором PVS-Studio при разработке C++ программ в среде Linux". Имейте в виду, что так как для сборки под 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".
Работа с отчетами
Чтобы посмотреть отчет под Linux, нужно сконвертировать полученный в результате работы анализатора файл в один из поддерживаемых форматов с помощью утилиты plog-converter. Получить отчет в формате HTML с возможностью просмотра исходного кода можно следующей командой:
plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir
Более подробно конвертация отчетов описана в статье "Знакомство со статическим анализатором PVS-Studio при разработке C++ программ в среде Linux".
Под 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
PVS-Studio классифицирует предупреждения согласно CWE и SEI CERT, что подходит для статического тестирования защищенности (SAST) обычных приложений. Однако у встраиваемых систем несколько другие требования к безопасности, которые покрывает специально разработанный стандарт MISRA. Текущая версия анализатора поддерживает часть правил из MISRA C и MISRA C++, список диагностик можно посмотреть здесь, и он постоянно расширяется.
Использования правил 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++".
Заключение
В этой статье мы обзорно рассмотрели возможности анализатора PVS-Studio для проверки проектов, ориентированных на встраиваемые системы. Если вам нужна более подробная информация о том, как использовать анализатор, рекомендую почитать следующие статьи:
- Знакомство со статическим анализатором кода PVS-Studio;
- Система мониторинга компиляции в PVS-Studio;
- Как запустить PVS-Studio в Linux и macOS;
- PVS-Studio SAST (Static Application Security Testing, SAST);
- Подавление ложных предупреждений.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Yuri Minaev. Using PVS-Studio Static Analyzer in C and C++ Development for Embedded Systems