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

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

  • МЭК 62304, 5.5.3 - Критерии приемки Модуля ПО

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

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

  • DO-331, Section MB.6.3.2.g 'Алгоритмы точны'
    DO-331, раздел MB.6.3.3.d 'Программная архитектура is verifiable'

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

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

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

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

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

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