Покрытие для моделей с блоками кода и блоками Simulink

В этом примере вы записываете покрытие для модели, которая содержит комбинацию блоков кода и других блоков Simulink®.

Настройте модель, чтобы записать покрытие

  1. Откройте модель.

    open_system('ex_cc_cruise_control_doublepress_sfun');

    Модель является системой круиз-контроля, которая состоит из тестов и входных сигналов от блока Signal Builder. Сигналы от действия Signal Builder как входные параметры к Stateflow® строят диаграмму ComputeTargetSpeed, который затрагивает или расцепляет систему круиз-контроля и устанавливает целевую скорость, tspeed.

  2. В Редакторе Simulink выберите Simulation> Model Configuration Parameters. Прежде, чем установить опции покрытия кода, на панели Code Generation в диалоговом окне Configuration Parameters, устанавливает System target file в меню Target selection к ert.tlc. Перейдите к вкладке Verification панели Code Generation. От вкладки Code coverage for SIL or PIL выберите None (use Simulink Coverage) как инструмент покрытия кода.

  3. В панели Coverage, набор опции для покрытия, вычисленного во время симуляции.

    1. Выберите Enable coverage analysis.

    2. В разделе Include in analysis гарантируйте, что C/C++ S-Functions выбран.

    3. В разделе Coverage metrics выберите Modified Condition Decision (MCDC) как Structural coverage level. Примените изменения путем нажатия на Apply.

  4. Откройте блок RejectDoublePress S-Function Builder. В Build options вкладки Build Info выберите Enable support for coverage. Чтобы создать S-функцию, нажмите Build.

    Примечание

    Чтобы создать S-функцию, необходимо было установить компилятор. Для получения дополнительной информации о поддерживаемых компиляторах для различных платформ см. Поддерживаемые и Совместимые Компиляторы.

Покрытие записи

  1. Откройте блок Signal Builder.

    open_system('ex_cc_cruise_control_doublepress_sfun/Signal Builder');
  2. Signal Builder состоит из восьми групп сигнала с пятью сигналами каждый. В этом примере мы моделируем все группы сигнала и записываем покрытие. Нажмите Run all and produce coverage, чтобы начать записывать покрытие. В конце симуляции Проводник Результатов покрытия открывается, показывая результаты для последнего анализа покрытия. Блоки в модели подсвечены в различных цветах, соответствующих уровню покрытия, достигнутого каждым блоком.

Рассмотрите результаты путем генерации отчета покрытия

Проводник Результатов покрытия предлагает несколько опций для отображения и создания отчетов о результатах покрытия. Выберите группу Not_Engaged_with_Enable во вкладке Current Cumulative Data левой панели. Щелкните по ссылке Generate report в нижней части Проводника Результатов покрытия, чтобы сгенерировать отчет покрытия HTML во встроенном в MATLAB® веб-браузере. Отчет покрытия перечисляет покрытие модели для блоков модели Simulink и покрытие кода для блоков кода.

Прокрутите вниз, чтобы просмотреть метрики покрытия для Блока s-function в отчете покрытия. Щелкните по ссылке Detailed Report, чтобы открыть отчет покрытия кода для Блока s-function. Для получения дополнительной информации на покрытии кода сообщают для Блоков s-function, seeView Результаты покрытия для Пользовательского Кода C/C++ в Блоках s-function.

Выровняйте по ширине недостающее покрытие

В этом примере мы выравниваем по ширине покрытие для одной группы входного сигнала путем создания фильтра покрытия. В отчете покрытия кода для Блока s-function, созданного в Результатах Анализа путем Генерации Отчета Покрытия, прокрутите вниз к Решению/Условию 2,1 !(CoastSetSwIn[0] && AccelResSwIn[0]). Этим условием никогда не является False для текущего теста. Мы можем поэтому выровнять по ширине это условие в нашем анализе покрытия.

  1. Щелкните по ссылке Justify or Exclude под подробными результатами для этого условия. Вкладка Filter Проводника Результатов покрытия открывается, и правило, фильтрующее этот переход, добавляется. Измените Mode для этого правила к Justified и введите описание для Rationale, такого как “выражение не может быть ложным”. Нажмите Apply, чтобы применить изменения.

  2. После того, как вы нажмете Apply, ссылка Generate report становится доступной. Щелкните по ссылке, чтобы сгенерировать отчет с обновленным фильтром покрытия. Новый отчет покрытия кода для Блока s-function RejectDoublePress перечисляет исключенное условие под Objects Filtered from Coverage Analysis. Подробные результаты для условия, !(CoastSetSwIn[0] && AccelResSwIn[0]) показывает, что недостающее покрытие для этого условия было выровнено по ширине. Выровненные по ширине объекты обработаны, как удовлетворено при создании отчетов о процентах покрытия и кажутся голубыми в Сводных данных Покрытия.

Для получения дополнительной информации о фильтрах покрытия смотрите, что Покрытие Фильтрует.

Смотрите также

| |