Understand の C/C++ 言語の解析では、Fuzzy と Strict の 2 つの解析モードを選択できます。
- Fuzzy
従来から存在する解析モードです。 - Strict
C/C++ をより厳密に解析するためのモードとして、Understand 3.0 で搭載されました。
Fuzzy と Strict には、以下のような特長 (違い) があります。
Fuzzy 解析
解析タスクについての、環境知識/スキルが十分ではない場合には、より容易に利用できる Fuzzy 解析をお勧めします。
- ファイル構成、パス/マクロ設定等の厳格な設定をおこなわなくても、ある程度の解析結果が得られる
- オーバーロード、C++テンプレートの解析が不十分 (オーバーロードの区別や、テンプレートの特殊化の区別ができない)
- Strict 解析より解析速度が高速
- コンパイラが選択可能
Strict 解析
解析タスクについての、十分な環境知識/スキルを持つ要員が確保でき、より厳格な解析結果を必要とする場合には、Strict 解析をお勧めします。
- 実際のコンパイル環境に近い厳格な設定をおこなうことで、Fuzzy 解析より精度の高い結果が得られる
- オーバーロード、C++ テンプレートの解析に対応 (オーバーロードの区別や、テンプレートの特殊化の区別)
- Objective-C/C++, C++11, C++14 の解析に対応
- Fuzzy 解析より解析速度は遅い
- ターゲットのアーキテクチャ、OS、言語規格が指定可能
C/C++ の Fuzzy, Strict 解析モードは、下記の箇所で設定し、変更できます。
- メインメニュー[プロジェクト]-[プロジェクトの設定]-[言語]を選択します。
- 右画面の言語選択画面の C/C++ の右欄の “Fuzzy”, “Strict” のオプションボタンで選択します。
Strict 解析では、十分なインクルードパス/マクロ設定がおこなえていない場合には、解析情報が生成されず、
未解決のエンティティが多数発生し、Fuzzy 解析以下の解析結果となる場合もあります。
また、Strict 解析ではより厳格な解析をおこなうため、Visual Studio や gcc などのコンパイラではエラーとはならない構文であっても、エラーとなる場合があります。ご注意ください。
一方、Fuzzy 解析は、設定が不十分であっても、ある程度の解析結果を得ることが可能です。
状況に応じて、Fuzzy, Strict の解析モードを使い分けてご利用ください。