Во время симуляции вашего тестового файла приложение MATLAB® Coder™ обнаруживает мертвый код или код, который является постоянный свернутый. Приложение использует информацию о покрытии кода при переводе кода от кода MATLAB с плавающей точкой до фиксированной точки код MATLAB. Рассмотрение результатов покрытия кода помогает вам проверить, что ваш тестовый файл осуществляет алгоритм соответственно.
Приложение вставляет встроенные комментарии в фиксированную точку, чтобы отметить мертвых и непереведенные области. Это включает информацию о покрытии кода в сгенерированный отчет HTML преобразования фиксированной точки. Редактор приложения отображает панель, на которую наносят цветную маркировку, слева от кода. Эта таблица описывает расцветку.
Цвет панели покрытия | Указывает |
---|---|
Зеленый |
Одна из следующих ситуаций:
Различные оттенки зеленого цвета указывают на различные области значений количеств выполнения строки. Самый темный оттенок зеленого цвета указывает на самую высокую область значений. |
Оранжевый | Функция точки входа выполняется многократно, но код выполняет одно время. |
Красный | Код не выполняется. |
Мертвый код является кодом, который не выполняется во время симуляции. Мертвый код может следовать из этих сценариев:
Защитный код, содержащий предназначенные угловые случаи, которые не достигнуты
Человеческая ошибка в коде, приводящем к коду, который не может быть достигнут никаким путем к выполнению
Несоответствующая область значений испытательного стенда
Сворачивание констант
Этот пример показывает, как обнаружить мертвый код в вашем алгоритме при помощи приложения MATLAB Coder.
В локальной перезаписываемой папке создайте функциональный myFunction.m
.
function y = myFunction(u,v) %#codegen for i = 1:length(u) if u(i) > v(i) y=bar(u,v); else tmp = u; v = tmp; y = baz(u,v); end end end function y = bar(u,v) y = u+v; end function y = baz(u,v) y = u-v; end
В той же папке создайте тестовый файл, myFunction_tb
.
u = 1:100; v = 101:200; myFunction(u,v);
Из галереи приложений откройте приложение MATLAB Coder.
Установите Numeric Conversion на Convert to fixed point
.
На странице Select Source Files просмотрите к файлу myFunction
и нажмите Open.
Нажмите Next. На странице Define Input Types просмотрите, чтобы выбрать тестовый файл, который вы создали, myFunction_tb
. Нажмите Autodefine Input Types.
Нажмите Next. На странице Check for Run-Time Issues нажмите Check for Issues.
Выполнение приложения тестовый файл myFunction_tb
и не обнаруживает проблем.
Нажмите Next. На странице Convert to Fixed-Point нажмите Analyze, чтобы моделировать функции точки входа, собрать информацию области значений и получить предложенные типы данных.
Панель, на которую наносят цветную маркировку, на левой стороне окна редактирования указывает, выполняется ли код. Код в первом условии оператора "if" не выполняется во время симуляции, потому что u никогда не больше, чем v. Функция bar
никогда не выполняется, потому что оператор "if" никогда не выполняется. Эти части алгоритма отмечены красной панелью, указав, что они - мертвый код.
Чтобы применить предложенные типы данных к функции, нажмите Convert.
Приложение MATLAB Coder генерирует функцию фиксированной точки, myFunction_fixpt
. Сгенерированная фиксированная точка содержит комментарии вокруг частей кода, идентифицированного как мертвый код. Панель Validation Results предлагает, чтобы вы использовали более полный испытательный стенд.
Когда приложение MATLAB Coder обнаруживает мертвый код, рассмотрите редактирование вашего тестового файла так, чтобы ваш алгоритм был осуществлен по его полному спектру. Если ваш тестовый файл уже отражает полный спектр входных переменных, полагайте, что редактирование вашего алгоритма устраняет мертвый код.
Закройте приложение MATLAB Coder.
Отредактируйте тестовый файл myFunction_tb.m
, чтобы включать более широкую область значений входных параметров.
u = 1:100; v = -50:2:149; myFunction(u,v);
Вновь откройте приложение MATLAB Coder.
Используя ту же функцию и отредактированный тестовый файл, пройдите процесс преобразования снова.
После того, как вы нажимаете Analyze, на этот раз панель покрытия кода показывает, что все части алгоритма выполняются с новыми входными диапазонами тестового файла.
Чтобы закончить процесс преобразования и преобразовать функцию в фиксированную точку, нажмите Convert.