Invalid result of AUTOSAR runnable implementation

Возвращаемое значение или выходные аргументы нарушают спецификации AUTOSAR

Описание

Эта проверка выполняет функции, реализующие AUTOSAR runnables. Проверка определяет, могут ли выходные аргументы и возвращаемое значение от выполнимого нарушить спецификации AUTOSAR во времени выполнения.

Используя информацию о панели Result Details, определите, нарушают ли возвращаемое значение или аргумент ограничения данных в спецификациях XML AUTOSAR или могут быть с пустым знаком. Ищите! значок, который указывает на определенную ошибку или? значок, который указывает на возможную ошибку.

Для каждого выходного аргумента и возвращаемого значения, проверка ищет эти нарушения:

  • Ограничительные нарушения данных:

    Предположим в этой реализации выполнимого foo, возвращаемое значение, которое представляет ошибку приложения, имеет тип данных перечисления с конечным множеством значений. Анализ проверяет, может ли возвращаемое значение получить значение вне того набора во время выполнения.

    iOperations_ApplicationError foo(
        Rte_Instance const self,
        app_Array_2_n320to320ConstRef aInput,
        app_Array_2_n320to320Ref aOutput,
        app_Enum001Ref aOut2) {
    ...
    }
    Проверка может привести к сообщению, такому как это. Сообщение указывает, что аргумент имеет значение, которое выходит за пределы ограниченной области значений (в этом случае, значение 43).

    В общем случае анализ проверяет, остается ли каждый выходной аргумент выполнимого и возвращаемого значения в ограниченной области значений, позволенной их типами данных AUTOSAR. Вы предельные значения типов данных AUTOSAR путем обращения к ограничениям данных в файлах ARXML.

  • NULL или освобожденные указатели:

    Предположим в этой реализации выполнимого foo, первый выходной аргумент aOutput указатель. Анализ проверяет, является ли указатель непустым и выделенным для всех возможных путей к выполнению по возврату из выполнимого.

    iOperations_ApplicationError foo(
        Rte_Instance const self,
        app_Array_2_n320to320ConstRef aInput,
        app_Array_2_n320to320Ref aOutput,
        app_Enum001Ref aOut2) {
    ...
    }
    Проверка может привести к сообщению, такому как это.

    В общем случае анализ проверяет, является ли указатель выходные аргументы от выполнимого непустым и выделенным по возврату из выполнимого.

    По умолчанию анализ принимает что аргументы указателя к runnables и указателям, возвращенным в Rte_ функции не являются ПУСТЫМИ. Чтобы изменить это предположение, не задайте макро-RTE_PTR2USERCODE_SAFE использование опции -U из polyspace-autosar команда.

    Смотрите запущенный Polyspace на коде AUTOSAR с консервативными предположениями.

Проверка сначала рассматривает возврат из выполнимого и затем выходных аргументов. Если возврат из выполнимого указывает на ошибку, проверка не смотрит на выходные аргументы на путях к выполнению с ошибкой.

Например, в этом примере, возвращаемым значением является RTE_E_OK только если выходной аргумент aOut2 не является ПУСТЫМ. Проверка не рассматривает другие пути к выполнению (где возвращаемым значением не является RTE_E_OK). Поэтому это определяет тот aOut2 не может быть NULL.

// Runnable implementation
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 (aOut2!=NULL_PTR)
    {
        // set invalid value will trigger STD_LIB RED in prove-runnable wrapper
        *aOut2 = 4;
        rc = RTE_E_OK;
    }
    return rc;
}

Причина этого поведения следующая: Если возврат из выполнимого указывает на ошибочное состояние на определенном пути к выполнению, можно оценить ошибочное состояние и принять меры по ликвидации последствий. Проверки на этапе выполнения не требуются для тех путей. В определенных ситуациях вы можете использовать один или несколько выходных аргументов, чтобы предоставить дополнительную информацию об ошибочном состоянии. Вы можете хотеть проверять, если те, которые выходным аргументом может быть NULL, когда выполнимое завершает выполнение. Если у вас есть это требование, свяжитесь с Технической поддержкой.

Проверка не отмечает эти ситуации:

  • Выходные аргументы не записаны вообще в теле выполнимого (или не записаны вдоль определенных путей к выполнению).

  • Возвращаемое значение не инициализируется в теле выполнимого (или не инициализируется вдоль определенных путей к выполнению).

Анализ проверяет на соответствие с ограничениями данных только, когда возвращаемое значение инициализируется или записанные выходные аргументы.

Информация о результате

Группа: Другой
Язык: C
Акроним: AUTOSAR_IMPL

Введенный в R2018a