exponenta event banner

Недопустимый результат выполняемой реализации AUTOSAR

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

Описание

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

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

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

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

    Предположим, в этой реализации runnable 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 или нераспределенные указатели:

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

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

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

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

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

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

Например, в этом примере возвращаемое значение равно 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;
}

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

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

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

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

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

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

Группа: Другое
Язык: C
Акроним: AUTOSAR_IMPL
Представлен в R2018a