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

Polyspace® для AUTOSAR запускает статический анализ программы реализации кода компонентов программного обеспечения AUTOSAR. Анализ ищет возможные ошибки времени выполнения или несоответствие со спецификациями в AUTOSAR XML (ARXML).

Анализ по умолчанию принимает, что аргументы указателя к runnables и указателям, возвращенным в функции Rte_, не являются ПУСТЫМИ. Например, в этом примере, анализ принимает, что aInput, aOutput и aOut2 не являются ПУСТЫМИ. Условия, которые сравнивают эти аргументы с 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;
}

Вы можете хотеть запустить консервативный анализ, где аргументы указателя к runnables и указателям, возвращенным в функции Rte_, могут быть с пустым знаком. Консервативный анализ помогает вам определить, приняли ли вы меры против возможности указателей с пустым знаком в вашем выполнимом.

Чтобы позволить возможность указателей с пустым знаком из внешних источников, не задайте макро-RTE_PTR2USERCODE_SAFE. Чтобы не задать макрос, используйте один из этих методов в зависимости от того, как вы запускаете анализ.

  • В пользовательском интерфейсе Polyspace макрос задан с опцией Preprocessor definitions (-D). Удалите макрос из этой опции и переместите в опцию Disabled preprocessor definitions (-U).

  • Если при запуске polyspace-autosar в командной строке, используйте опцию -U, чтобы не задать макрос.

Если вы отключаете макрос, вы больше не видите недостижимый код при сравнении аргументов указателей с runnables против NULL. Чтобы видеть эффект этого макроса, запустите консервативный анализ Polyspace демонстрационных файлов в polyspaceroot\help\toolbox\codeprover\examples\polyspace_autosar.

Смотрите также

Похожие темы