Main Content

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

coder.screener

関数がコード生成に適しているかどうか判別

説明

coder.screener(fcn) は、エントリポイント MATLAB® 関数 fcn を解析し、コード生成の準拠問題として、サポートされない関数および言語機能を特定します。コード生成の準拠問題は準備状態のレポートに表示されます。

fcn が MathWorks® 関数以外の関数 (MATLAB の組み込み関数とツールボックス関数) を直接的または間接的に呼び出すと、coder.screener でそれらの関数が解析されます。MathWorks 関数は解析されません。

coder.screener がすべてのコード生成の問題を検出できるとは限りません。状況によっては、coder.screener が誤ったエラーをレポートする場合があります。

コード生成の問題の不検出や誤ったエラーの検出を回避するには、コードを生成する前に、追加のチェックを実行して MATLAB コードがコード生成に適していることを確認します。

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

  • coder.screener を使用した後、MEX 関数を生成して検証することで MATLAB コードがコード生成に適していることを確認してから C/C++ コードを生成してください。

関数 coder.screener はコード ジェネレーターが外部関数として扱う関数はレポートしません。このような関数の例として、plotdisp、および figure が挙げられます。外部関数を参照してください。

coder.screener(fcn_1,...,fcn_n) は複数のエントリポイント MATLAB 関数を解析します。

すべて折りたたむ

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

関数 foo2 を記述して、ファイル foo2.m に保存します。

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

foo2 を呼び出す関数 foo1 を記述します。foo1 をファイル foo1.m に保存します。

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

foo1 を解析します。

coder.screener('foo1')

コード生成の準備状態のレポートに、サポートされない MATLAB 関数呼び出しの概要が表示されます。レポートの [概要] タブで、foo2.m にコード生成でサポートされていない関数 eval の呼び出しが 1 つ含まれていることが示されています。

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

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

  • グリーン: 関数 (foo1.m) はコード生成に適している。

  • 黄: 関数 (foo2.m) は重要な変更が必要。

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

関数 foo2 が、サポートされない MATLAB 関数を 1 つ呼び出しています。foo2.m 用の MEX 関数を生成するには、コードを変更して eval の呼び出しを外部にしてから、コード生成の準備状態ツールを再実行します。

関数 coder.extrinsic を使用して関数 eval を外部に更新します。

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

coder.screener を再実行します。

coder.screener('foo1')

レポートには、関数 eval がコード生成でサポートされないというフラグが示されなくなっています。foo1 用の MEX 関数を生成すると、コード ジェネレーターは実行用の eval を MATLAB に送信します。スタンドアロン コード生成の場合、コード ジェネレーターは eval のコードを生成しません。

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

MATLAB カレンダー duration 配列データ型を含む関数 myfun1 を記述します。

function out = myfun1(A)
out = calyears(A);
end

myfun1 を解析します。

coder.screener('myfun1');

コード生成の準備状態のレポートに、calyears データ型はコード生成でサポートされないことが示されます。

レポートで myfun1 に割り当てられたコード生成の準備状態のスコアは 3 になっています。コードを生成する前に、報告された問題を修正します。

入力引数

すべて折りたたむ

解析するエントリポイント MATLAB 関数の名前。文字ベクトルまたは string スカラーとして指定します。

例: coder.screener('myfun');

データ型: char | string

解析するエンドポイント MATLAB 関数の名前のコンマ区切りリスト。文字ベクトルまたは string スカラーとして指定します。

例: coder.screener('myfun1','myfun2');

データ型: char | string

制限

  • 関数 coder.screenerMATLAB Online™ でサポートされていません。

R2012b で導入