Возвращаемое значение или выходные аргументы нарушают спецификации 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) {
...
}![]()
Как правило, анализ проверяет, находится ли каждый выходной аргумент выполняемого и возвращаемого значения в ограниченном диапазоне, разрешенном их типами данных 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 |