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

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

  • IEC 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 широковещательно передается в действии входа A. Evn результаты в рекурсивном вызове алгоритма интерпретации. Поскольку A активен, исходящий переход A тестируется. Начиная с текущего события Evn совпадает с событием перехода (и из-за отсутствия условия), действие условия выполняется, широковещательно передавая Evn снова. Это приводит к новому вызову алгоритма интерпретации, который повторяет ту же последовательность шагов до переполнения стека.

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