В этом примере выполняется запись покрытия для модели, содержащей комбинацию кодовых блоков и других блоков Simulink ®.
Откройте модель.
open_system('ex_cc_cruise_control_doublepress_sfun');
Модель представляет собой систему круиз-контроля, которая состоит из тестовых примеров и входных сигналов от блока Signal Builder. Сигналы, поступающие из Signal Builder, являются входами в диаграмму Stateflow ®ComputeTargetSpeed, который подключает или отключает систему круиз-контроля и устанавливает целевую скорость, tspeed.
В редакторе Simulink выберите «Параметры модели» на вкладке «Моделирование». Перед настройкой параметров покрытия кода на панели Создание кода (Code Generation) в диалоговом окне Параметры конфигурации (Configuration Parameters) установите в меню Выбор целевого объекта (Target selection) значение Системный целевой файл (System target file). ert.tlc. Перейдите на вкладку Проверка на панели Создание кода. На вкладке Покрытие кода для SIL или PIL выберите None (use Simulink Coverage) в качестве инструмента покрытия кода.
На панели «Покрытие» задайте параметры покрытия, рассчитанные во время моделирования.
Выберите Включить анализ покрытия.
В разделе Включить в анализ убедитесь, что выбраны C/C + + S-функции.
В разделе Показатели покрытия выберите Modified Condition Decision (MCDC) как уровень структурного покрытия. Примените изменения, нажав кнопку Применить.
Откройте окно RejectDoublePress
Блок S-Function Builder. В разделе Параметры сборки на вкладке Сведения о сборке выберите Включить поддержку покрытия. Чтобы создать S-функцию, щелкните Построить (Build).
Примечание
Для создания S-функции необходимо установить компилятор. Дополнительные сведения о поддерживаемых компиляторах для различных платформ см. в разделе Поддерживаемые и совместимые компиляторы.
Откройте блок Построитель сигналов.
open_system('ex_cc_cruise_control_doublepress_sfun/Signal Builder');Построитель сигналов состоит из восьми групп сигналов по пять сигналов каждая. В этом примере мы моделируем все группы сигналов и записываем покрытие. Нажмите
Run all и создайте покрытие, чтобы начать запись покрытия. В конце моделирования откроется обозреватель результатов покрытия, показывающий результаты последнего анализа покрытия. Блоки в модели подсвечиваются различными цветами, соответствующими уровню покрытия, достигаемому каждым блоком.
Обозреватель результатов покрытия предлагает несколько вариантов отображения и создания отчетов о результатах покрытия. Выберите Not_Engaged_with_Enable на вкладке Текущие совокупные данные левой панели. Щелкните ссылку Создать отчет в нижней части обозревателя результатов покрытия, чтобы создать отчет о покрытии HTML во встроенном веб-браузере MATLAB ®. В отчете о покрытии перечисляется покрытие модели для блоков модели Simulink и покрытие кода для блоков кода.
Прокрутите вниз для просмотра метрик покрытия для блока S-Function в отчете о покрытии. Щелкните по ссылке Подробный отчет, чтобы открыть отчет о покрытии кода для блока S-Function. Дополнительные сведения об отчете о покрытии кода для S-функциональных блоков см. в разделе Просмотр результатов покрытия для пользовательского кода C/C + + в S-функциональных блоках.
В этом примере мы обосновываем покрытие для одной группы входных сигналов путем создания фильтра покрытия. В отчете о покрытии кода для S-функционального блока, созданного в окне Просмотр результатов путем создания отчета о покрытии, выполните прокрутку вниз до решения/условия 2.1. !(CoastSetSwIn[0] && AccelResSwIn[0]). Это условие никогда False для текущего тестового случая. Поэтому мы можем обосновать это условие в нашем анализе покрытия.
Щелкните ссылку Выровнять (Justify) или Исключить (Exclude) под подробными результатами для этого условия. Откроется вкладка Фильтр (Filter) обозревателя результатов покрытия, и будет добавлено правило фильтрации этого перехода. Изменить режим для этого правила на Justified и введите описание обоснования, например «выражение не может быть ложным». Нажмите кнопку Применить (Apply), чтобы применить изменения.
После нажатия кнопки Применить (Apply) становится доступной ссылка Создать отчет (Generate report). Щелкните ссылку, чтобы создать отчет с обновленным фильтром покрытия. Новый отчет о покрытии кода для RejectDoublePress
Блок S-Function перечисляет исключенное условие в разделе Объекты, отфильтрованные из анализа покрытия. Подробные результаты для условия !(CoastSetSwIn[0] && AccelResSwIn[0]) показать, что отсутствие покрытия для этого условия было оправдано. Выровненные объекты обрабатываются как удовлетворенные при создании отчета о процентах покрытия и отображаются светло-синим цветом в сводке покрытия.

Дополнительные сведения о фильтрах покрытия см. в разделе Фильтрация покрытия.
Покрытие для пользовательского кода C/C + + в моделях Simulink | Создание и использование фильтров покрытия | Типы отчетов о покрытии