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 が挙げられます。Use MATLAB Engine to Execute a Function Call in Generated Codeを参照してください。

coder.screener(fcn,'-gpu') は、エントリポイント MATLAB 関数 fcn を解析し、GPU コード生成でサポートされない関数および言語機能を特定します。このオプションには GPU Coder™ ライセンスが必要です。

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

すべて折りたたむ

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

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

function tf = foo2(source,target)
G = digraph(source,target);
tf = isdag(G);
end

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

function tf = foo1(source,target)
assert(numel(source)==numel(target))
tf = foo2(source,target);
end

foo1 を解析します。

coder.screener('foo1')

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

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

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

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

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

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

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

function tf = foo2(source,target)
coder.extrinsic('digraph','isdag');
G = digraph(source,target);
tf = isdag(G);
end

coder.screener をエントリポイント関数 foo1 に対して再実行します。

coder.screener('foo1')

レポートには、関数 digraph と関数 dag がコード生成でサポートされないというフラグが示されなくなっています。foo1 用の MEX 関数を生成すると、コード ジェネレーターは実行用のこれら 2 つの関数を MATLAB に送信します。

関数 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 で導入