В этом разделе описывается основанный на компонентах подход к проверке кода AUTOSAR с Polyspace. Для подхода интегрирования анализа смотрите Выбор между основанным на компонентах и Интегрировании анализом кода AUTOSAR с Polyspace.
Polyspace® для AUTOSAR запускает статический анализ программы по реализации кода программных компонентов AUTOSAR. Анализ ищет возможные ошибки времени выполнения или несоответствие спецификациям в AUTOSAR XML (ARXML).
Анализ по умолчанию предполагает, что указатель аргументов к выполняемым и указателям, возвращенным из Rte_
функции не являются NULL. Например, в этом примере анализ принимает, что aInput
, aOutput
и aOut2
не имеют значение NULL. Условия, которые сравнивают эти аргументы с NULL_PTR
всегда рассчитывайте на ложь и отображайте серый цвет в результатах. Здесь, NULL_PTR
является макросом, который представляет NULL.
iOperations_ApplicationError foo( Rte_Instance const self, app_Array_2_n320to320ConstRef aInput, app_Array_2_n320to320Ref aOutput, app_Enum001Ref aOut2) { iOperations_ApplicationError rc = E_NOT_OK; if (aInput==NULL_PTR) { rc = RTE_E_iOperations_ERR001; } else if (aOutput==NULL_PTR) { rc = 43; } else { unsigned int i=0; for (;i<2U;++i) { aOutput[1-i] = aInput[i]; } if (aOut2!=NULL_PTR) { *aOut2 = 1234; rc = RTE_E_OK; } } return rc; }
Можно хотеть запустить консервативный анализ, где указатель аргументов к выполняемым и указателям, возвращенным из Rte_
функции могут иметь значение NULL. Консервативный анализ помогает вам определить, защитились ли вы от возможности NULL-значимых указателей в рабочем состоянии.
Чтобы разрешить возможность использования NULL-значений указателей из внешних источников, не определите макрос RTE_PTR2USERCODE_SAFE
. Чтобы не определить макрос, используйте один из следующих методов в зависимости от того, как вы запускаете анализ.
В пользовательском интерфейсе Polyspace макрос определяется опцией Preprocessor definitions (-D)
. Удалите макрос из этой опции и перейдите к опции Disabled preprocessor definitions (-U)
.
Если вы запускаете polyspace-autosar
в командной строке используйте опцию -U
чтобы не определить макрос.
Если вы отключаете макрос, вы больше не видите недоступный код при сравнении аргументов указателей с runnables против NULL. Чтобы увидеть эффект этого макроса, запустите консервативный анализ Polyspace на демо- файлы в
.polyspaceroot
\ help\toolbox\codeprover\examples\polyspace _ авто-РСА