coder.screener

Определите, подходит ли функция для генерации кода

Синтаксис

coder.screener(fcn)
coder.screener(fcn_1,...,fcn_n )

Описание

coder.screener(fcn) анализирует точку входа функция MATLAB®, fcn. Это идентифицирует неподдерживаемые функции и функции языка как проблемы соответствия генерации кода. Это отображает проблемы соответствия генерации кода в отчете. Если fcn вызывает другие функции прямо или косвенно, которые не являются функциями MathWorks®, coder.screener анализирует эти функции. Это не анализирует функции MathWorks. Возможно, что coder.screener не обнаруживает все проблемы генерации кода. При определенных обстоятельствах возможно, что coder.screener сообщает о ложных ошибках.

coder.screener(fcn_1,...,fcn_n ) анализирует функции точки входа (fcn_1,...,fcn_n).

Входные параметры

fcn

Имя функции MATLAB точки входа, которую вы хотите анализировать. Задайте как вектор символов или скаляр строки.

fcn_1,...,fcn_n

Список, разделенный запятыми имен функций MATLAB точки входа, которые вы хотите анализировать. Задайте как векторы символов или представьте скаляры в виде строки.

Примеры

свернуть все

Функция coder.screener идентифицирует вызовы функций, которые не поддерживаются для генерации кода. Это проверяет и функцию точки входа, foo1 и функциональный foo2, который вызывает foo1.

Запишите функциональный foo2 и сохраните его в файле foo2.m.

function out = foo2(in)
  out = eval(in);
end

Запишите функциональный foo1, который вызывает foo2. Сохраните foo1 в файле foo1.m.

function out = foo1(in)
  out = foo2(in);
  disp(out);
end

Анализируйте foo1.

coder.screener('foo1')

Отчет готовности генерации кода отображает сводные данные неподдерживаемых вызовов функции MATLAB. Функциональный foo2 вызывает одну неподдерживаемую функцию MATLAB.

В отчете кликните по вкладке Code Structure и установите флажок Show MATLAB functions.

Эта вкладка отображает круговую диаграмму, показывающую относительный размер каждого файла и насколько подходящий каждый файл для генерации кода. В этом случае, отчет:

  • foo1.m цветов, зеленый, чтобы указать, что это подходит для генерации кода.

  • foo2.m цветов, желтый, чтобы указать, что это требует существенных изменений.

  • Присвоения foo1.m счет готовности генерации кода 4 и foo2.m счет 3. Счет основан на шкале 1–5. 1 указывает, что существенные изменения требуются; 5 указывает, что инструмент готовности генерации кода не обнаруживает проблемы.

  • Отображает дерево вызова.

Отчет вкладка Summary указывает, что foo2.m содержит один вызов функции eval, которую не поддерживает генерация кода. Чтобы сгенерировать MEX-функцию для foo2.m, измените код, чтобы выполнить вызов к внешнему eval.

function out = foo2(in)
  coder.extrinsic('eval');
  out = eval(in);
end

Повторно выполните инструмент готовности генерации кода.

coder.screener('foo1')

Отчет больше не отмечает ту генерацию кода, не поддерживает функцию eval. Когда вы генерируете MEX-функцию для foo1, генератор кода отправляет eval MATLAB для выполнения. Для автономной генерации кода генератор кода не генерирует код для eval.

Функция coder.screener идентифицирует типы данных MATLAB, которые не поддерживает генерация кода.

Запишите функциональный myfun, который содержит таблицу MATLAB.

function outTable = myfun1(A)
outTable = table(A);
end

Анализируйте myfun.

coder.screener('myfun1');

Отчет готовности генерации кода указывает, что типы данных table не поддержаны для генерации кода.

Отчет присваивает myfun1 счет готовности кода 3. Прежде, чем сгенерировать код, необходимо устранить проблемы, о которых сообщают.

Советы

  • Перед использованием coder.screener устраните проблемы, которые идентифицирует Анализатор кода.

  • Прежде, чем сгенерировать код, используйте coder.screener, чтобы проверять, что функция подходит для генерации кода. Устраните все проблемы, которые это обнаруживает.

  • Возможно, что coder.screener не обнаруживает все проблемы и может сообщить о ложных ошибках. Поэтому прежде, чем сгенерировать код С, проверьте, что ваш код подходит для генерации кода путем генерации MEX-функции.

Представленный в R2012b