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