В этом разделе описывается основанный на компонентах подход к проверке кода 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.
Чтобы следовать шагам в этом руководстве, используйте демо- файлы в В примере используются диафрагмы make-файла и пути Linux на основе Linux. Чтобы запустить пример в Windows®, внесите соответствующие изменения. |
Скопируйте содержимое демо-папки во временную папку, например /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
задан.
Файл 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.