• Imagix 4D ユーザガイド
  • 目次

その他のレポート

[インクルード解析] レポート

[インクルード解析] レポートは、あるファイルと、直接的あるいは間接的にインクルードされたヘッダファイルとの依存関係を表示します。特定のファイルで使用されている各シンボルについて本レポートでは、必要とされる他のシンボルの定義もしくは宣言が判断され、次にヘッダファイルのインクルードを通して、これらの定義や宣言の検出方法を解析します。

[インクルード解析] レポートを解析することにより、#include 階層の最適化、コンパイル時間の短縮、さらにコードの再利用性の向上を実現することが可能です。

[類似関数] レポート

[類似関数] レポートは、名前や構造の面で類似している関数を検出します。この情報によって、類似したコードの統合を試みるリファクタリングの作業がサポートされます。また、類似した関数を特定することは、ある関数へのバグ修正が、他の関数にも適用可能か否かを調べる際にも有用です。

関数の類似性は、関数名、相互参照のファンアウト、およびメトリクスの集合に対する類似性スコアを結合した公式によって判定されます。任意の2つの関数について、名前の類似性は文字列内の大文字 / 小文字を区別せずに計算されます。ファンアウトの類似性は、2つの関数によって呼び出される関数の重複に基づきます。メトリクスの類似性については3つのメトリクス [McCabeサイクロマティック複雑度]、[Halsteadプログラム困難度]、[文の数] が考慮されます。メトリクス類似性スコアには、最も類似性の低いメトリクスが反映されます。

これらの個々の類似性スコアを結合する公式は、ユーザによる指定が可能です。このレポートはデフォルトで、90% 類似する名前と 90% 類似のファンアウトを持つか、90% 類似する名前と 90% 類似するメトリクス値を持つか、90% 類似のファンアウトと 90% 類似するメトリクス値を持つ関数をリスト表示します。また、この公式は [類似性の公式] ダイアログを使用して、変更することができます。

このレポートは2通りの方法で実行できますが、[レポート] メニューから起動する場合には、プロジェクト内の関数すべてについて類似する関数をチェックします。この場合、名前の長さ、相互参照のファンアウト、および [McCabeサイクロマティック複雑度] に対して最小値を定義することで、コンテンツの少ない関数を考慮しないようにします。

あるいは [解析] ダイアログから [類似関数] レポートを実行することにより、ある特定の関数に類似した関数を特定することもできます。[解析] ダイアログが非ライブラリ関数に焦点を当てる際は常に、このダイアログでの選択が可能です。

[反映解析] レポート

[反映解析] (反射解析)レポートは、リフレクション API(java.lang.reflect)から実行される、Java メソッドの呼び出しに対する高度な解析を行います。本解析は、プロジェクト内の "invoke()" への呼び出しをすべて特定し、それら動的な呼出しのターゲットとして選択されたメソッドへの追跡を試みます。レポートは、解析で特定の難しい選択されたメソッド "invoke()" の位置を一覧表示します。このレポートと関連する解析は、Java プロジェクトに限り使用することが可能です。

レポートが実行されると、その解析結果は現在のセッションのデータベースに統合されます。動的な呼出しの関係は、メソッドが選択された位置(いわゆる動的な呼出しのリクエスタ)と、そのターゲットの間に追加されます。これらの関係は、[グラフ] ウィンドウに表示することができ、通常の呼び出し関係を示す任意のビューでも動的な呼び出しを表示することが可能です。

[JNIコール解析] レポート

JNIコール解析は、JNI(Java Native Interface)に基づいてJavaからC/C++コードへの可能な呼び出しを識別します。これは、ネイティブと見なされるすべてのメソッドを報告するJavaのみのプロジェクトでも使用できますし、混合Java-C/C++プロジェクトでも使用できます。この場合、JNI API呼び出しによってJavaから呼び出されるように登録されたすべてのC/C++関数を見つけ出します。そして、修飾名とシグネチャ、または登録文字列によってJavaメソッドとC/C++関数を可能な限り関連付けます。

JNIコール解析レポートは、すべてのJavaメソッドとC/C++のJNI関数、およびそれらの関連付けをリストします。このレポートを実行しても、Imagix 4Dのソースコードの表示には影響しません。

解析はソースコードがプロジェクトに読み込まれた時点で自動的に行われます。Java関数から対応するC/C++関数への呼び出し関係はプロジェクトデータベースに組み込まれ、可視化および依存関係解析に利用できます。レポートを実行すると、それらの関係の一覧が提供されます。