ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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(fcn_1,...,fcn_n ) はエントリ ポイント関数 (fcn_1,...,fcn_n) を解析します。

入力引数

fcn

解析するエントリ ポイント MATLAB 関数の名前。

fcn_1,...,fcn_n

解析するエントリ ポイント MATLAB 関数の名前のコンマ区切りリスト。

すべて展開する

サポートされない関数の特定

関数 coder.screener は、コード生成でサポートされない関数の呼び出しを特定します。エントリ ポイント関数 foo1 と、foo1 が呼び出す関数 foo2 の両方をチェックします。

foo2 を呼び出す MATLAB 関数 foo1 を解析します。

function out = foo1(in)
  out = foo2(in);
  disp(out);
end
function out = foo2(in)
  out = eval(in);
end
coder.screener('foo1')

コード生成の準備状態のレポートが開きます。ここには、サポートされない MATLAB 関数呼び出しの概要が示されます。関数 foo2 が、サポートされない MATLAB 関数を 1 つ呼び出しています。

レポートで [コード構造] タブをクリックして、[MATLAB 関数の表示] を選択します。

このタブには、各ファイルの相対サイズと各ファイルがコード生成に適している度合いを示す円グラフが表示されます。この場合、レポートでは以下のことが示されます。

  • foo1.m は緑色で表示され、コード生成に適していることが示されます。

  • foo2.m は黄色で表示され、いくつかの重要な変更が必要なことが示されます。

  • コード生成の準備状態のスコアは、foo1.m が 4、foo2.m が 3 に割り当てられています。スコアは 1 ~ 5 のスケールに基づきます。1 は重要な変更が必要なことを示し、5 はコード生成の準備状態のツールで何の問題も検出されなかったことを示します。

  • 呼び出しツリーを表示します。

レポートの [概要] タブは、foo2.m がコード生成でサポートされていない関数 eval の呼び出しを 1 つ含んでいることを示しています。foo2.m 用の MEX 関数を生成するには、外部関数 eval の呼び出しを実行するようコードを変更します。

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

コード生成の準備状態ツールを再び実行します。

coder.screener('foo1')

レポートには、関数 eval がコード生成でサポートされないというフラグが示されなくなっています。foo1 用の MEX 関数を生成すると、コード生成ソフトウェアは自動的に MATLAB に対して eval を要求します。スタンドアロン コード生成では、この関数のコードは生成されません。

サポートされないデータ型の特定

関数 coder.screener は、コード生成でサポートされないデータ型を特定します。

サポートされないデータ型を使用する MATLAB 関数 foo3 を解析します。

function [outSparse, outCategorical] = foo3(inVal,inString1,inString2)
    outSparse = sparse(inVal);
    cellArray = {inString1,inString2};
    outCategorical = categorical(cellArray);
end
coder.screener('foo3')

コード生成の準備状態のレポートが開きます。サポートされないデータ型の概要が示されます。

レポートは、コードにコード準備状態スコア 2 を割り当て、コードに大規模な変更が必要であることを示しています。

コードを生成する前に、報告された問題を修正しなければなりません。

複数のエントリ ポイント関数に対して、コード生成の準備状態を判別

関数 coder.screener は、コード生成でサポートされない関数の呼び出しを特定します。エントリ ポイント関数 foo4 および foo5 をチェックします。

MATLAB 関数 foo4foo5 を解析します。

function out = foo4(in)
  out = in;
  disp(out);
end
function out = foo5(in)
  out = eval(in);
end
coder.screener('foo4', 'foo5')

コード生成の準備状態のレポートが開きます。ここには、サポートされない MATLAB 関数呼び出しの概要が示されます。関数 foo5 が、サポートされない MATLAB 関数を 1 つ呼び出しています。

レポートで [コード構造] タブをクリックして、[MATLAB 関数の表示] を選択します。

このタブには、各ファイルの相対サイズと各ファイルがコード生成に適している度合いを示す円グラフが表示されます。この場合、レポートでは以下のことが示されます。

  • foo1.m は緑色で表示され、コード生成に適していることが示されます。

  • foo2.m は黄色で表示され、いくつかの重要な変更が必要なことが示されます。

  • コード生成の準備状態のスコアは、foo1.m が 4、foo2.m が 3 に割り当てられています。スコアは 1 ~ 5 のスケールに基づきます。1 は重要な変更が必要なことを示し、5 はコード生成の準備状態のツールで何の問題も検出されなかったことを示します。

  • 呼び出しツリーを表示します。

詳細

すべて展開する

ヒント

  • coder.screener を使用する前に、コード アナライザーにより特定された問題を修正してください。

  • コードを生成する前に、coder.screener を使用して関数がコード生成に適していることを確認してください。検出されたすべての問題を修正してください。

この情報は役に立ちましたか?