В этом примере показано, как отключить инспекцию кода для невстроенных функций, сгенерированных от пользовательских функций MATLAB.
Если ваша модель содержит блоки функций MATLAB, которые включают пользовательские функции MATLAB с неподдерживаемым кодом, Simulink Code Inspector может не смотреть код, сгенерированный из модели. Чтобы избежать отказа из-за несовместимостей, отключите контроль для невстроенных функций, сгенерированных от пользовательских функций MATLAB, которые не поддержали код MATLAB так, чтобы Simulink Code Inspector мог смотреть остальную часть типового кодекса успешно. Чтобы отключить контроль, невстроенные функции должны быть сгенерированы как nonresuable.
model ='slcidemo_noninline_func_verification';
open_system(model);

Модель содержит два блока MATLAB function, каждый из которых включает пользовательскую функцию. Эти функции сконфигурированы, чтобы быть одноразового использования и не встроены в сгенерированном коде. Чтобы проверять совместимость модели с Simulink Code Inspector, от окна модели, открывают вкладку Code Inspector. Нажмите Check Compatibility.
Рассмотрите результаты проверки совместимости, отображенные в панели Программы контроля совместимости. Присутствие неподдерживаемого кода в блоке MATLAB function MFB1 сообщается. Чтобы подсветить неподдерживаемый код, нажмите на гиперссылку в соответствии с Кодом.

Использование встроенной функции MATLAB parfor в пользовательских функциях не поддерживается Simulink Code Inspector. Можно изменить функцию, чтобы сделать его совместимым. Если вы не хотите изменять пользовательскую функцию foo1, то можно отключить инспекцию кода для невстроенной функции, сгенерированной от foo1, чтобы избежать возможности инспекционного отказа из-за несовместимости. В этом случае необходимо вручную рассмотреть невстроенную функцию.
1. Установите ручной флаг анализа в несовместимой, пользовательской функции MATLAB.
type fcn1.m
function out1 = fcn1(u1)
%codegen
out1 = foo1(u1);
function y = foo1(u)
% Set coder.inline directive to 'never'
coder.inline('never');
% Set manual review flag
slci.mlutil.reviewmode('manual');
y = ones(1,100);
parfor (i = 1:5)
y(i) = i+u;
end
2. Выберите Настройки Модели параметра инспекции кода> контроль Пропуска невстроенных функций, определяемых во флажке блока MATLAB function. В качестве альтернативы запустите этот код:
config = slci.Configuration(model); setDisableNonInlinedFuncBodyVerification(config, true);
3. Нажмите Generate Code.
4. Чтобы запустить контроль, нажмите Inspect.
5. Рассмотрите результаты инспекции кода, которые появляются в панели Результатов Верификации Code Inspector.

Полным Состоянием является Warning, что означает, что Simulink Code Inspector частично проверил сгенерированный код. Результат верификации уровня объектов slcidemo_noninline_func_verification/MFB1 блок Частично Обрабатывается, который указывает, что часть блочного кода не проверяется. Во вкладке Utility Function это обозначается, что ручной анализ требуется для невстроенной функции, сгенерированной от foo1. Simulink Code Inspector не смотрит невстроенную функцию, но успешно смотрит остальную часть типового кодекса.