exponenta event banner

hisf_0004: Защита от рекурсивных вызовов функций для улучшения соответствия кода

Идентификатор: Заголовокhisf_0004: Защита от рекурсивных вызовов функций для улучшения соответствия кода
ОписаниеЧтобы улучшить соответствие генерируемого кода, не вызывайте функции рекурсивно. Сюда входит любое сочетание графических функций, функций таблицы истинности, функций MATLAB ® или Simulink ®.
Предпосылки
ПримечанияРекурсия существует, когда функция вызывает себя прямо или косвенно через другой вызов функции.
ОбъяснениеПродвижение поведения вызова ограниченной функции.
Проверки помощника по моделиПроверка использования рекурсий (Simulink Check)
Ссылки
  • IEC 61508-3, таблица B.1 (6) «Ограниченное использование рекурсии»

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, таблица 6 (1j) «Без рекурсий»

  • EN 50128, Таблица A.12 (6) «Ограниченное использование рекурсии»

  • DO-331, Раздел MB.6.3.2.g «Алгоритмы точны»
    DO-331, раздел MB.6.3.3.d «Проверка архитектуры программного обеспечения»

  • MISRA C:2012, правило 17.2

Последнее изменениеR2021a
Примеры

В Stateflow ® существует несколько шаблонов, которые могут привести к рекурсии .

Рекурсивные вызовы функций

При вводе состояния по умолчанию A событие Evn транслируется во входном действии А. Evn приводит к рекурсивному вызову алгоритма интерпретации. Поскольку А активен, проверяется исходящий переход А. С момента текущего события Evn соответствует событию перехода (и из-за отсутствия условия) выполняется действие условия, вещание Evn снова. Это приводит к новому вызову алгоритма интерпретации, который повторяет одну и ту же последовательность шагов до переполнения стека.

Рекурсивные вызовы функций