В этом разделе описывается основанный на компонентах подход к проверке кода 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 _ авто-РСА