Control Flowモード |
多くの場合、ソフトウェアの呼び出し階層に関心があるのであれば、標準的な呼び出しグラフで必要な情報はすべてわかるかもしれません。ただし、関数呼び出 しのシーケンス及び条件、コード内での変数の使用方法を理解する必要があることもあるでしょう。そのような場合により詳細な制御フローの解析ができるよう に、Imagix 4DはControl Flowモードを用意しています。
Control Flowグラフでは、関数および変数に使用される表記が拡張されます。これにより、関数の内部プログラムロジックでの該当部分を表示させることができるた め、関数の表記を、関数の[フローチャート]を抽象化したものとして捕らえることもできるでしょう。結果となるグラフでは、関数呼び出しおよび変数のセッ トおよび読み取りが関数のプログラムロジックのどこで行われているかを表示できます。
例えば、mainについて考えてみましょう。mainの青いタイトルバーの下には、ソースコードから抽出した4つのスニペットがあります。これらは strcpy、Program::Program および yyparseの各関数への呼び出しについて、シーケンスと条件を理解するうえで必要なソースコードの行です。
黄色いテキストは、ソースコードのスニペットがデシジョンの一部であることを示します。白は、テキストがコードのブロックから由来していることを示しま す。ソースコード・スニペットの横方向の位置も重要です。strcpyへの呼び出しを表す白いテキストはインデントされ、最初のIF条件に一致したときに のみstrcpyが呼び出されることを示しています。これに対し、Program::Programへの呼び出しはインデントされずに2つのif行と並ん でいます。これは呼び出しが無条件であり、mainが呼び出されるときは常に発生することを示します。 yyparseへの呼び出しは3番目のケースを表し、yyparseはifプログラム制御文の一部として呼び出されます。
別の例として、yyparseシンボルの下部にある白いソースコード・スニペットを見てください。このIdentifier::Identifierの呼 び出しは下のcase 33というテキストの右にあります。これは、’case’条件が一致すれば、特定の呼び出しが発生することを意味します。
Control Flowグラフによって、コード内の複雑でシーケンスが重要な領域における依存関係を素早く理解することができます。これを理解することにより、コードを操作する際の生産性を向上させ、エラーの発生を減少させることができます。