Запуск Polyspace для кода AUTOSAR с помощью команды Build

В этом разделе описывается основанный на компонентах подход к проверке кода AUTOSAR с Polyspace. Для подхода интегрирования анализа смотрите Выбор между основанным на компонентах и Интегрировании анализом кода AUTOSAR с Polyspace.

Если вы используете методологию AUTOSAR для разработки программного обеспечения с командой build для компиляции, можно повторно использовать существующие программные продукты, чтобы задать исходные файлы и опции компиляции для Code Prover.

  • Спецификацию исходного файла можно повторно использовать в авто-РСА XML- файлы.

    Polyspace® может читать спецификации AUTOSAR XML и извлекать исходные файлы, используемые в каждом программном компоненте, в модули для последующих проверок во время выполнения Code Prover. Если вы используете методологию AUTOSAR для разработки программного обеспечения, можно повторно использовать модуляризацию, встроенную в эту методологию, для модульного анализа Code Prover. Посмотрите polyspace-autosar.

  • Можно повторно использовать опции компиляции, заданные в команде build.

    Polyspace может проследить вашу команду сборки и обнаружить компилятор, вызываемый вместе с опциями компиляции, такими как пути к стандартным включениям и определениям макросов. Посмотрите polyspace-configure.

В этом разделе показано, как объединить два подхода и автоматизировать анализ Code Prover.

Чтобы следовать шагам в этом руководстве, используйте демо- файлы в polyspaceroot/ help/toolbox/codeprover/examples/polyspace_autosar_configure.

В примере используются диафрагмы make-файла и пути Linux на основе Linux. Чтобы запустить пример в Windows®, внесите соответствующие изменения.

Запуск Code Prover без опций компиляции

Скопируйте содержимое демо-папки во временную папку, например /tmp/demo/. Перейдите к этой папке.

cd /tmp/demo

Запустите Code Prover на ARXML и исходных файлах в подпапке mRtwDemoAutosar_autosar_rtw. Сохраните результаты в папке /tmp/res.

polyspace-autosar -create-project /tmp/res \
-arxml-dir mRtwDemoAutosar_autosar_rtw \
-sources-dir mRtwDemoAutosar_autosar_rtw

Обратите внимание на ошибки компиляции. Для образца, в /tmp/res/.extract папка, откройте файл GPIO_read.log. Вы видите #error директива, потому что макрос MY_DEFINE_FROM_SIMULINK не определен.

Если вы открываете файл GPIO_read.c в /tmp/demo/mRtwDemoAutosar_autosar_rtw, вы видите линии, вызывающие проблему.

#ifndef MY_DEFINE_FROM_SIMULINK
#error Missing MY_DEFINE_FROM_SIMULINK
#endif

Эта линия должна вызвать ошибку во время предварительной обработки, если только макрос не MY_DEFINE_FROM_SIMULINK задан.

Запустите Code Prover с опциями компиляции из команды Build

Файл make mRtwDemoAutosar.mk в /tmp/demo/mRtwDemoAutosar_autosar_rtw задает макросы и пути для включения папок. Например, ранее отсутствующий макрос MY_DEFINE_FROM_SIMULINK определяется в линии:

DEFINES_CUSTOM = -DMY_DEFINE_FROM_SIMULINK

Перейдите к папке, содержащей файл make.

cd /tmp/demo/mRtwDemoAutosar_autosar_rtw

Извлеките опции компиляции из команды build, которая использует этот make-файл mRtwDemoAutosar.mk. Например, если вы установили MATLAB® в /usr/local/MATLAB/R2018bможно проследить файл make вот так.

polyspace-configure -no-sources \
-output-options-file psoptions -allow-overwrite\
make -B -f mRtwDemoAutosar.mk START_DIR=.. \
MATLAB_ROOT=/usr/local/MATLAB/R2018b buildobj

Опции компиляции в make-файле преобразуются в опции анализа Polyspace и сохраняются в файле options psoptions. The -no-sources опция гарантирует, что polyspace-configure команда извлекает только опции компиляции, но не источники. START_DIR и MATLAB_ROOT являются переменными, характерными для демо-файла make, и могут не потребоваться в других используемых make-файлах.

Удалите результаты из любого предыдущего запуска polyspace-autosar команда.

rm -r /tmp/res

Предоставьте файл опций psoptions созданный на предыдущем шаге к polyspace-autosar команда.

polyspace-autosar -create-project /tmp/res \
-arxml-dir . \
-sources-dir .\
-extra-options-file psoptions

Вы больше не видите ошибок компиляции, потому что Code Prover теперь знает об опциях компиляции, которые вы использовали в команде build.

См. также

Похожие темы