今回は、Understand における関数の再帰呼出しや循環参照の表示についてご紹介します。
関数の再帰呼出しや循環参照の関係は、Understand の解析結果では下記の箇所で確認することができます。
- 依存関係グラフ(Internal Dependencies Graph)
循環参照は、赤色の矢印で表示されます。 - Calls with Global Objects グラフ
再帰呼出しは、自身への矢印として表示されます。
循環参照は、双方向の矢印で表示されます。
※カスタムプラグインのインストールによって表示されるグラフです。 - 情報ブラウザー
再帰呼出しや循環参照は、Calls ツリーで、recursive として表示されます。
下記のサンプルコードでご説明します。
01 void funcD() { 02 return; 03 } 04 void funcC() { 05 funcA(); 06 funcD(); 07 } 08 void funcB(int paramX) { 09 while (paramX < 10) paramX = funcB(paramX); 10 funcC(); 11 } 12 void funcA() { 13 funcB(1); 14 funcC(); 15 }
依存関係グラフ(Internal Dependencies Graph)
循環参照は、赤色の矢印で表示されます。
![](http://understand.techmatrix.jp/wp-content/uploads/2017/03/Internal2BDependencies-recursive.png)
Calls with Global Objects グラフ
再帰呼出しは、自身への矢印として表示されます。
循環参照は、双方向の矢印で表示されます。
![](http://understand.techmatrix.jp/wp-content/uploads/2017/03/CallswithGlobalObjects-funcA.png)
Calls with Global Objects グラフは、カスタムプラグインをインストールすることで表示できます。
カスタムプラグインのインストールについては、「Understand 特設サイト」を参照ください。
情報ブラウザー
再帰呼出しや循環参照は、情報ブラウザー画面の Calls ツリーでは、recursive として表示されます。
![](http://understand.techmatrix.jp/wp-content/uploads/2017/03/IB-funcA.png)
Callsグラフ
Calls グラフや、Cluster Call グラフ等のグラフィカルビューでは、通常の関数呼出しの一つとして表示されます。
![](http://understand.techmatrix.jp/wp-content/uploads/2017/03/Calls-funcA.png)
再帰呼出しや循環参照の呼出し箇所を確認する際に、依存関係グラフや Calls with Global Objects グラフ、情報ブラウザーの表示を是非ご活用ください。