Чтобы проверить структурную эквивалентность и двустороннюю отслеживаемость между исходной моделью и сгенерированным кодом C, Simulink Code Inspector сравнивает код с исходной моделью. При помощи приложения Code Inspector можно выполнить процесс инспекции кода, рассмотреть инспекционные результаты и сгенерировать отчет HTML, который обеспечивает детальный анализ структурной эквивалентности и двусторонней отслеживаемости между моделью и сгенерированным кодом.
Эта тема демонстрирует выполнение инспекции кода при помощи Приложения Code Inspector. Затем вы намеренно создаете несоответствие между исходной моделью и сгенерированным кодом путем добавления ненужной локальной переменной в код. Далее, контроль модифицированного кода помогает в наблюдении, как Simulink Code Inspector реагирует на несоответствие.
Можно выполнить инспекцию кода программно при помощи команд MATLAB. Для получения дополнительной информации смотрите, Смотрят Код Используя Интерфейс командной строки.
1. Откройте модель slcidemo_roll_orig
в качестве примера путем ввода имени модели в Командном окне. Сохраните копию модели в рабочей папке и переименуйте его
slcidemo_roll
.
2. Чтобы открыть вкладку Code Inspector, из окна топ-модели, на вкладке Apps, выбирают Code Inspector.
1. Чтобы отключить оптимизацию генерации кода, которая несовместима с Simulink Code Inspector, нажмите Model Settings. В диалоговом окне модели Configuration Parameters, на панели Оптимизации, устанавливает параметр, Отключают несовместимую оптимизацию к -SLCI
. Эта установка ограничивает оптимизацию кода, используемую Embedded Coder к подмножеству, которое совместимо с Simulink Code Inspector. Когда вы используете эту установку, сгенерированный код может отличаться от кода, сгенерированного без -SLCI
установка. Различия не влияют на поведение сгенерированного кода.
2. На основе ваших требований можно настроить параметры в Настройках Модели выпадающее меню.
Чтобы включать модели, на которые ссылаются, в проверку совместимости модели и инспекцию кода, выберите Inspect все модели, на которые ссылаются.
Чтобы смотреть сгенерированные поддерживаемые совместно использованные утилиты, выберите Inspect Shared Utilities.
Если вы хотите к disbale контролю для невстроенных функций, сгенерированных от пользовательских функций MATLAB, выберите контроль Skip невстроенных функций, определяемых в блоке MATLAB function. Прежде чем вы добавите эту функциональность, установите ручной флаг slci.mlutil.reviewmode
анализа в пользовательских функциях MATLAB, для которых вы хотите отключить контроль. Для получения дополнительной информации смотрите, Отключают Контроль для Невстроенных Функций, определяемых в блоках MATLAB function.
Чтобы отключить инспекцию кода если проверки совместимости сбоев модели, выберите контроль Terminate, если модель приводит проверку совместимости к сбою.
В данном примере используйте настройки по умолчанию параметров в Настройках Модели выпадающее меню. Путем выбора настроек по умолчанию вы конфигурируете, чтобы проверять совместимость модели и инспекцию кода запуска только для топ-модели. Для примера, который демонстрирует, как запустить контроль включая модели, на которые ссылаются, смотрите, Смотрят Код, Сгенерированный из Модели Simulink.
3. Используйте цель топ-модели для проверки совместимости, генерации кода и инспекции кода при помощи значения по умолчанию Как: Top Model
установка.
Чтобы избежать отказа инспекции кода из-за несовместимости модели с Simulink Code Inspector, проверяйте совместимость модели. Осуществите проверки совместимости модели путем нажатия на Check Compatibility. Результаты отображены непосредственно в панели Программы контроля совместимости рядом с моделью. Рассмотрите результаты проверки и зафиксируйте несовместимости при необходимости. Для получения дополнительной информации смотрите Совместимость Модели Проверки при помощи Приложения Code Inspector.
Чтобы проверить функциональность во время выполнения, симулируйте модель. Если модель симулирует без ошибок, можно перейти к следующим шагам. Если Simulink выдает ошибку при симуляции зафиксируйте ошибку, пока модель не симулирует без ошибок.
После того, как ваша совместимость передач модели проверяет и симулирует без ошибок, сгенерируйте код из модели. Если вы хотите сгенерировать отчет генерации кода HTML для дальнейшего использования, из окна топ-модели, открыть диалоговое окно модели Configuration Parameters и установить эти флажки параметра:
Создайте отчет генерации кода
Открытый отчет автоматически
Нажмите Generate Code. Сгенерированный код появляется в Представлении кода рядом с моделью. Можно вручную открыть последний сгенерированный код в Представлении кода путем нажатия на View Code.
1. Перед рабочей инспекцией кода задайте местоположение сгенерированного кода. Используйте настройку по умолчанию, Смотрят> Размещение Кода, потому что код находится в структуре папок значения по умолчанию Embedded Coder.
2. Опционально, можно изменить местоположение, к которому инспекция кода значением по умолчанию пишет отчет инспекции кода при помощи текстового поля Inspect> Report Folder. В данном примере введите путь к папке ./report
. Во время инспекции кода Simulink Code Inspector создает папку, названную отчетом.
3. Чтобы запустить контроль, нажмите Inspect. Результаты верификации топ-модели slcidemo_roll
появитесь в панели Результатов Верификации Code Inspector.
Полным Состоянием является Passed,
который указывает, что сгенерированный код и топ-модель структурно эквивалентны. Рассмотреть результаты верификации slcidemo_roll
модель более подробно, выберите вкладки в панели.
Вкладка Model Elements обеспечивает результаты верификации блоков, используемых в топ-модели.
Вкладка Code обеспечивает результаты верификации функциональных выходных переменных или переменных состояния, используемых в каждой сгенерированной функции для топ-модели.
Вкладка Interface обеспечивает результаты верификации сгенерированных функциональных интерфейсов.
Вкладка Temporary Variable обеспечивает результаты верификации временных переменных, сгенерированных для кода топ-модели.
Вкладка Utility Function обеспечивает результаты верификации служебных функций, сгенерированных для кода топ-модели.
Если у вас есть сгенерированный код, открытый в Представлении кода, можно визуально рассмотреть инспекцию кода двунаправленные результаты трассируемости модели к коду и проследить строки кода, сгенерированные для переменных и функций.
Если вы удовлетворены результатами инспекции кода, генерируете отчеты HTML путем нажатия на Generate Report. Simulink Code Inspector отображает подробный отчет HTML топ-модели. Файл HTML сохранен в report
папка, которую вы задали в текстовом поле Report Folder.
Чтобы наблюдать, как Simulink Code Inspector реагирует, когда существует структурное несоответствие между исходной моделью и сгенерированным кодом, добавьте ненужную локальную переменную в slcidemo_roll_initialize
функция в slcidemo_roll.c
.
1. Откройте slcidemo_roll.c
код в редакторе MATLAB.
open 'slcidemo_roll_ert_rtw'/'slcidemo_roll.c'
2. В slcidemo_roll_initialize
функционируйте, задайте локальную переменную ImplicitIterator_itr
.
3. Откройте модифицированный код в Представлении кода путем нажатия на View Code.
4. Чтобы смотреть модифицированный код, нажмите Inspect.
После осмотра модифицированного кода Simulink Code Inspector отображает результаты верификации топ-модели в панели Результатов Верификации Code Inspector.
Полным Состоянием является Failed
, который указывает, что сгенерированный код и топ-модель больше не структурно эквивалентны. Чтобы идентифицировать проблемы, которые ответственны за инспекционный отказ, рассмотрите результаты во вкладках панели.
Во вкладке Temporary Variable, ImplicitIterator_itr
переменная имеет Не пройдено, чтобы проверить состояние. Чтобы проследить код, что линия ответственна за отказ, кликните по строке.
В Представлении кода, строка кода, которая задает локальную переменную ImplicitIterator_itr
подсвечен. Если вы генерируете и проверяете отчет HTML, вы видите, что существует индикация относительно отказа инспекции кода из-за ненужной локальной переменной.