Запуск Polyspace на коде AUTOSAR с консервативными допущениями

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

См. также

Похожие темы