Возвращаемое значение или выходные аргументы нарушают спецификации 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 |