Генератор кода выполняет статический анализ сгенерированного C или Кода С++ и обеспечивает эти метрики в разделе Static Code Metrics Report Отчета Генерации КОДА HTML. Когда вы устанавливаете свой курсор на функцию или переменную в сгенерированном коде, можно также видеть метрики.
Можно использовать информацию в отчете к:
Найдите количество файлов и строк кода в каждом файле.
Оцените количество строк кода и использования стека на функцию.
Сравните различие в терминах того, сколько файлов, функций, переменных и строк кода сгенерировано каждый раз, когда вы изменяете алгоритм MATLAB® или модель.
Определите целевую платформу и выделение RAM к стеку, на основе размера глобальных переменных плюс предполагаемый размер стека.
Определите возможную производительность медленные точки, такие как самые большие глобальные переменные или самый дорогостоящий путь к вызову с точки зрения использования стека.
Просмотрите цикломатическую сложность функции, которая считает количество линейно независимых контуров через функцию.
Просмотрите дерево вызова функции. Определите самый длинный путь к вызову, чтобы оценить худшую синхронизацию выполнения случая.
Просмотрите, как целевые функции, обеспеченные выбранной заменяющей библиотекой кода, используются в сгенерированном коде.
Для примеров см.:
Статический анализ сгенерированного кода выполняется только на исходном коде, не выполняя программу. Результаты статического метрического анализа кода включены в раздел Static Code Metrics Отчета Генерации КОДА HTML. Отчет не доступен, если вы генерируете MEX-функцию из кода MATLAB.
Статический анализ сгенерированных файлов исходного кода:
Использует заданные типы данных C. Для моделей Simulink® вы задаете эти типы данных в Hardware Implementation> панель Production hardware диалогового окна Configuration Parameters. Для генерации кода из кода MATLAB вы задаете их во вкладке Hardware диалогового окна настроек проекта MATLAB Coder™ или использования объекта настройки генерации кода. Метрики фактического объекта кода могут отличаться из-за целевого компилятора и настроек платформы.
Включает пользовательский код, только если вы задаете его. Для моделей Simulink вы задаете пользовательский код на Code Generation> панель Custom Code в настройке модели. Для генерации кода из кода MATLAB вы задаете его на вкладке Debugging диалогового окна настроек проекта MATLAB Coder или использования объекта настройки генерации кода. Сообщение об ошибке сгенерировано, если сгенерированный код включает специфичные для платформы файлы, не содержавшиеся в стандарте C библиотека времени выполнения.
Для моделей Simulink, включает сгенерированный код из моделей, на которые ссылаются.
Выравнивание 1 байта использования для всех членов структуры для оценки глобальных и локальных размеров структуры данных. Размер структуры вычисляется путем подведения итогов размеров всех ее полей. Эта оценка представляет самый маленький размер для структуры.
Вычисляет сам размер стека функции как размер локальных данных в функции, исключая входные параметры. Накопленный размер стека функции сам размер стека плюс максимум накопленных размеров стека его вызванных функций. Например, если накопленные размеры стеков для вызванных функций представлены как accum_size1...accum_sizeN
, то накопленный размер стека для функции
accumulated_stack_size = self_stack_size + max(accum_size1,...,accum_sizeN)
При оценке размера стека функции статический анализ останавливается в первой инстанции рекурсивного вызова. Таблица Function Information показывает, когда рекурсия происходит в пути к вызову функции. Генерация кода генерирует только рекурсивный код для широковещательной передачи события Stateflow и для графических функций, если это записано как рекурсивная функция.
Вычисляет цикломатическую сложность функции как количество решений плюс одно:
CC = Number of decisions + 1
Оператор if
Оператор else if
Оператор switch (1 решение для каждого ответвления case
)
Инструкции циклов: В то время как, поскольку, Делают - в то время как
Булевы операторы в предыдущих построениях не добавляют дополнительные решения.
Не включает ert_main.c
, потому что у вас есть опция, чтобы обеспечить ваш собственный main.c
.
Когда вы просматриваете код в отчете генерации кода к метрикам кода доступа и определениям:
На Code Generation> панель Report, если вы устанавливаете флажок Static code metrics, можно установить курсор на глобальные переменные и функции в окне кода, чтобы видеть информацию о метриках кода.
В окне кода, если вы кликаете по соединенным переменным или функциям, код осматривает окно, открывается. Окно обеспечивает ссылки на определения для переменных или функций. На Code Generation> панель Report, если вы установили флажок Static code metrics, можно также видеть информацию о метриках кода для переменной или функции.
Когда вы просматриваете код в Представлении кода перспективы Кода, устанавливаете ваш курсор на меню замещающего знака выше глобальных переменных и функций, чтобы видеть информацию о метриках кода.
Подсказка обеспечивает ссылку на определение для переменной или функции.
Статические метрики кода не доступны, если целевая настройка для модели приводит к сгенерированному коду что:
Включает заголовочный файл, который не сгенерирован иерархией модели и не является системным заголовочным файлом
Использует макрос, который не распознан