getLineColumn
コード生成に関連する MATLAB コードの最初と最後の位置の特定
構文
説明
[
は、startLoc
,endLoc
] = getLineColumn(obj_message
)obj_message
で記述されたコード生成メッセージの原因となった MATLAB コードの最初の文字と最後の文字の行および列のインデックスを返します。
[
は、startLoc
,endLoc
] = getLineColumn(obj_callsite
)obj_callsite
で記述された関数呼び出しサイトの最初の文字と最後の文字に対応する、その呼び出しを含むファイルのテキスト内での行および列のインデックスを返します。
例
MATLAB 関数のファイル内での位置の特定
コード生成プロセス用のレポート情報オブジェクトを作成します。その後、コード生成に関連する MATLAB 関数の、その関数を含むファイル内での位置を特定します。
MATLAB 関数 foo
を定義します。
function [b,c] = foo(a) b = svd(a,0); c = bar(a); end function c = bar(a) c = inv(a); end
foo
の静的な C ライブラリを生成します。入力を string スカラーとして指定します。コード生成レポートの情報をベースの MATLAB ワークスペースの変数 info
にエクスポートします。
codegen -config:lib foo -args {"A string scalar"} -reportinfo info
string スカラーは MATLAB 関数 svd
および inv
の有効な入力でないため、コード生成は失敗します。コード ジェネレーターにより、レポート情報オブジェクト info
がベースの MATLAB ワークスペースに作成されます。
プロパティ info.Functions
は 2 次元配列です。info.Functions(1)
に MATLAB 関数 foo
の記述が格納されます。info.Functions(2)
に MATLAB 関数 bar
の記述が格納されます。
関数 bar
を手動で検証するには、最初に bar
を含むファイルのテキストを表示します。
info.Functions(2).File.Text
'function [b,c] = foo(a) b = svd(a,0); c = bar(a); end function c = bar(a) c = inv(a); end '
getLineColumn
を使用して、このテキスト内の関数 bar
の最初と最後の位置を特定します。出力 startLoc
に bar
の最初の文字の行および列のインデックスが格納されます。出力 endLoc
に bar
の最後の文字の行および列のインデックスが格納されます。
[startLoc,endLoc]=getLineColumn(info.Functions(2))
startLoc = struct with fields: Line: 6 Column: 1 endLoc = struct with fields: Line: 8 Column: 3
コード生成エラー メッセージの原因となった MATLAB コードの特定
失敗するコード生成プロセス用のレポート情報オブジェクトを作成します。その後、エラー メッセージの原因となった MATLAB コードの部分を特定します。
MATLAB 関数 foo
を定義します。
function b = foo(a) b = svd(a,0); end
foo
の静的な C ライブラリを生成します。入力を string スカラーとして指定します。コード生成レポートの情報をベースの MATLAB ワークスペースの変数 info
にエクスポートします。
codegen -config:lib foo -args {"A string scalar"} -reportinfo info
string スカラーは MATLAB 関数 svd
の有効な入力でないため、コード生成は失敗します。コード ジェネレーターにより、レポート情報オブジェクト info
がベースの MATLAB ワークスペースに作成されます。
プロパティ info.Messages
は 2 つのコード生成メッセージの記述を含む 2 次元配列です。最初のメッセージの記述を検証します。
info.Messages(1)
Message with properties: Identifier: 'Coder:toolbox:unsupportedClass' Type: 'Error' Text: 'Function 'svd' is not defined for values of class 'string'.' File: [1×1 coder.CodeFile] StartIndex: 26 EndIndex: 33
このエラー メッセージの原因となった MATLAB コードのセグメントを手動で検証するには、最初にこのエラー メッセージに関連付けられているファイルのテキストを表示します。
info.Messages(1).File.Text
'function b = foo(a) b = svd(a,0); end '
getLineColumn
を使用して、エラー メッセージの原因となったコードの部分の最初と最後の位置を特定します。出力 startLoc
にコード セグメントの最初の文字の行および列のインデックスが格納されます。出力 endLoc
にコード セグメントの最後の文字の行および列のインデックスが格納されます。
[startLoc,endLoc] = getLineColumn(info.messages(1))
startLoc = struct with fields: Line: 2 Column: 5 endLoc = struct with fields: Line: 2 Column: 12
foo.m
のテキスト内の関数呼び出し 'svd(a,0)'
の最初と最後の位置に対応します。入力引数
obj
— コード生成に関連する MATLAB の関数またはメソッドを記述するオブジェクト
ハンドル オブジェクト
コード生成に関連する MATLAB 関数または MATLAB クラスのメソッドを記述するオブジェクト。次のいずれかとして指定します。
関数の記述の場合は
coder.Function
オブジェクト。coder.Function のプロパティ を参照してください。メソッドの記述の場合は
coder.Method
オブジェクト。coder.Method のプロパティ を参照してください。
obj_message
— コード生成エラー メッセージを記述するオブジェクト
coder.Message
オブジェクト
MATLAB コードからのコード生成時に生成されたエラー、警告、情報のメッセージを記述する coder.Message
オブジェクト。coder.Message のプロパティ を参照してください。
obj_callsite
— 関数呼び出しサイトを記述するオブジェクト
coder.CallSite
オブジェクト
MATLAB コード内の関数呼び出しサイトを記述する coder.CallSite
オブジェクト。coder.CallSite のプロパティ を参照してください。
出力引数
startLoc
— MATLAB コードの最初の文字の行および列のインデックス
構造体配列
Line
と Column
の 2 つのフィールドをもつ構造体配列。
startLoc.Line
は、MATLAB コードの最初の文字に対応する、そのコードを含むファイルのテキスト内での行インデックスです。startLoc.Column
は、MATLAB コードの最初の文字に対応する、そのコードを含むファイルのテキスト内での列インデックスです。
endLoc
— MATLAB コードの最後の文字の行および列のインデックス
構造体配列
Line
と Column
の 2 つのフィールドをもつ構造体配列。
endLoc.Line
は、MATLAB コードの最後の文字に対応する、そのコードを含むファイルのテキスト内での行インデックスです。endLoc.Column
は、MATLAB コードの最後の文字に対応する、そのコードを含むファイルのテキスト内での列インデックスです。
バージョン履歴
R2019a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)