|
ステップ 3 - プロジェクト設定の調整(C / C++)ソースコードの解析を開始すると Imagix 4D のメインパネルに [解析結果] ウィンドウが表示されます。ソースコードの解析中に、このウィンドウを見ることで処理をモニタすることや、どの程度ソースコードが円滑に解析されているかなどを、確認することが可能です。大量のエラーや警告が生成されている場合は、時間を有効に活用するためにも、プロジェクト設定の微調整を行う前に [停止] ボタンをクリックして、解析を停止することが最善の選択となります。[停止] ボタンを使用した停止に左右されることなく、解析の完了後にこのウィンドウを使用することで、特定した解析上の問題をレビューしたり、解決したりすることができます。 3a. 欠如しているヘッダファイルの解決[解析結果] ウィンドウにはさまざまなディスプレイが用意されており、[表示] メニューやこれに相当するアイコンバー上のボタンから利用することが可能です。そのうちの1つ([表示] > [欠如しているファイルを表示])は、欠如しているヘッダファイルに関するアナライザのメッセージに、重点を置いています。これらのメッセージは「cannot open file」という形で表示され、#include プリプロセッサ・ディレクティブが存在するファイルと、そのフォーマットを提示します。一般的にプロジェクト設定の調整における適切な起点として、欠如しているヘッダファイルを解決することがあげられます。なぜならばヘッダファイルの検索や、そのファイルに記述されているシンボルの宣言 / 定義の解析における失敗は、これらの宣言に依存するダウンストリームのソースコード解析に多大な影響を与えるからです。 このような欠如しているファイルの解決に関する詳細な説明は、本ユーザガイドに記載されています。 3b. マクロ定義の解決アナライザが [インクルード] ファイルを検索しているのにもかかわらず「unknown type foo near symbol bar」のようなエラーメッセージがディスプレイ ([表示] > [重大な警告を表示])に大量に表示される場合は、マクロ定義が不完全あるいは不正確であることが原因として考えられます。マクロ定義における条件付きコンパイルの制御方法を理由に除外された、ヘッダファイルのセクションに生成される typedef のように、要求される型が不明となることを理由に最も典型的なエラーが発生します。これは、プロジェクトに対する -D および -U オプションの指定方法、もしくはコンパイラ設定ファイルに記述された #defines の影響によるものです。 これらのマクロ定義の解決に関する詳細な説明は、本ユーザガイドに記載されています。 3c. エラーを順番に調査して解決するImagix 4Dアナライザは、字句パーサーでは得られない可能性のあるエラーメッセージを生成します。これは、ソースファイルからより完全で正確なデータを抽出するために、Imagix 4Dアナライザがコンパイラのような完全な意味解析を行うためです。ただし、コンパイラとは異なり、Imagix 4Dアナライザには組み込みのエラー修正機能があります。解析の問題が発生すると、Imagix 4Dはソースコードと再同期し、再同期中にスキップする必要のある行を報告します。そのため、解析結果を確認して解析の問題が重要かどうかを判断する際に、無視された行数を考慮してください。また、エラーメッセージが発生する順序も考慮してください。アップストリームエラーにより、シンボル、特にタイプが未定義になり、ダウンストリームエラーが発生する可能性があります。画面の前の方にリストされているアップストリームエラーを解決すると、多くのダウンストリームエラーが除去される可能性があります。 これに役立つ方法は、特定のファイルをクリックして特定のファイルに関連する初期エラーの1つを選択し、([表示] > [エラーの調査])画面でエラーの詳細を調べることです。ディスプレイは、エラーが発生したソースコード行の複数の側面に関する情報を照合します。これには、エラーが発生した場所の近くに表示されるシンボルトークンの定義が存在する、データベースで認識されているすべての場所を一覧表示するAdjacent Symbolsというラベルのセクションが含まれます。特定のシンボルの適切な定義がリストされていない場合は、何らかのアップストリームの問題が現在のエラーを引き起こしている可能性があります。 特定のファイルの最初のいくつかのエラーについては、エラーの洞察を提供するソースアナライザによって生成された情報を含む「エラーの詳細」というラベルのセクションが生成されます。 Previous Tokensエントリには、すべてのマクロを解決し、無効になっているすべての行を省略した後にアナライザに表示されるシンボルがリストされます。特に興味深いのは、タイプ名またはクラス名があるべき場所に現れる「IDENTIFIER」トークンです。これは、タイプまたはクラス定義が見つからなかったことを示します。通常、これはヘッダファイルの欠落が原因です。 パーサースタックは、分析のコンテキストに関する詳細を提供します。パーサースタックに一連の定義(例: "external_definition_list")が表示されているが、エラー行が実際にはステートメントである場合、全体的なネストはもはや正確ではありません。これは通常、閉じ中かっこがスキップされる原因となるアップストリームエラーが原因で発生します。 識別子エントリリストは、分析が最後の5つの識別子、タイプ名、またはクラス名について見つけたものの詳細を提供します。定義名があるはずの場所に「undef」が表示される場合、ヘッダーファイルが欠落しているか、不正なマクロ定義またはアップストリームエラーのためにそれらの定義がスキップされています。 3d. ファイル名の未指定に関する問題の修正ターゲットを Makefile に追加する解析方法を適用している場合、[アナライザ結果] ウィンドウには make により生成されたコマンドの応答結果が表示されます。このウィンドウに「Analyzing foo.c」形式のコメントがまったく表示されなければ、問題が発生しています。ここで頻発する問題に、ソースファイルの未指定があります。このため Makefile に記述されている IMAGIX_SOURCES の定義を、適切なエディタを使用して確認してください。3e. ソースファイル全体の指定プリプロセッサのオプションを調整すると同時に、意図的にファイルの一部のみを解析している場合や、エラーメッセージの生成を抑えるために -I、-D、-U オプションを調節したときには、解析の対象となるファイルすべてを反映するようにファイル定義を変更してください。Makefile の解析方法では、Makefile に記述されている IMAGIX_SOURCES を再定義します。またダイアログ・ベースの解析方法では、オリジナルの [データソース] ダイアログ([プロジェクト] > [データソース])を開き、[ソースファイル] タブの [ファイル] フィールドで変更を反映してください。
3f. 必要に応じた調整作業の反復解析結果に問題が無くなるまで、必要に応じてコンパイラ設定ファイル、 Makefile または [データソース] ダイアログで修正作業を行い、その後コードを再解析してください。コンパイラ設定ファイルや Makefile の変更には、[プロジェクト] > [プロジェクトデータを再生成] を使用します。その結果を持って 3a のセクションに戻り、それ以降のプロセスを繰り返してください。
|