Invalid result of AUTOSAR runnable implementation

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

Описание

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

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

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

  • Нарушения ограничений данных:

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

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

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

  • NULL или неотделенные указатели:

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

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

    В целом анализ проверяет, не являются ли выходные аргументы указателя из runnable non-NULL и распределяются ли они после возврата от runnable.

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

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

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

Для образца в этом примере возврата значение RTE_E_OK только если выходной аргумент aOut2 не имеет значение NULL. Проверка не рассматривает другие пути выполнения (где возврат значение не 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;
}

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

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

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

  • Значение возврата не инициализируется в теле runnable (или не инициализируется по определенным путям выполнения).

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

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

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