Sun WorkShop の優れたブラウズ機能を利用して、ヘッダーファイルのような大型プログラム内の任意のシンボルや文字列をすべて検出することができます。
この章は、次の各節で構成されています。
Sun WorkShop のブラウズ機能には、「ブラウズするとおりに表示される (What you see is what you browse)」という方針が採用されています。したがって、編集・コンパイルするソースコードは、Sun WorkShop が検索で使用するソースコードと同じです。
ブラウザでは、複数の言語を表示できます。複数言語で記述されたプログラムをブラウズする場合は、個々のソースファイルの言語が自動的に判別されます。ブラウザの操作方法は、どの言語を使用する場合でも同じです。
C、C++、FORTRAN 77、Fortran 90 で記述されたソースコードをブラウズする場合には、「問い合わせ」が発行されます。Sun WorkShop は、この問い合わせの指示に従って、シンボル、文字列、検索パターンをすべて検索し、一致項目と、その前後のソースコードを表示します。
また、プログラム内の関数とサブルーチンの関係をグラフ表示することもできます。ソースコードが C++ で記述されている場合は、プログラムに定義されているクラスのブラウズとグラフ表示が可能です。
問い合わせに対する応答は、ブラウズ対象ファイルの情報を納めたデータベースの検索結果です。このデータベースを作成するには、ソースファイルのコンパイル時にブラウズ用オプションを指定します。
Sun WorkShop メインウィンドウのツールバーで「ブラウズ」ボタンをクリックするか、「ブラウズ」メニューからコマンドを選択すると、「ブラウズ」ウィンドウ (図 3-1) が表示されます。メニューから「関数呼び出しをグラフ表示」、「クラスをグラフ表示」、「クラスのブラウズ」を選択すると、それぞれ、コールグラファ、クラスグラファ、クラスブラウザが開きます (図 3-5、図 3-6、図 3-7)。
「ブラウズ」メニュー |
ブラウズ対象ディレクトリの変更、グラフ表示の開始、インデックスの再構築、タグデータベースの作成、ソースをブラウズするサーバーの終了などを実行するコマンドがあります。「ブラウズ」ウィンドウを閉じるコマンドも含まれています。 |
「問い合わせ」メニュー |
検索のナビゲーション、検索のフィルタリング、検索履歴の表示を行うコマンドがあります。 |
「検索」ボタン |
問い合わせに一致した項目の検索を開始します。 |
「次の一致」ボタン |
検索区画で次の一致項目を強調表示し、一致したソースコードを示します。 |
「前の一致」ボタン |
検索区画で前の一致項目を強調表示し、一致したソースコードを示します。 |
「パターン検索」ラジオボタン |
「ブラウズ」ウィンドウをパターン検索モードに設定します。 |
「ソースをブラウズ」ラジオボタン |
「ブラウズ」ウィンドウをソースブラウズモードに設定します。 |
一致区画 |
スクロール式の区画で、検索条件に一致した項目をすべて表示します。現在の問い合わせで見つかった一致項目の合計数は、区画のすぐ上に表示されます。一致項目の情報は、左から、ファイル名、行番号、該当する行のテキストの順で表示されます。 |
メッセージ表示領域 |
現在の検索の状態や検索中のエラーを表示します。 |
「ブラウズ」ウィンドウでは、「パターン検索」と「ソースのブラウズ」の 2 種類のブラウズモードを設定することができます。目的別にモードを使い分けてください。
次の場合は、パターン検索モードを選択します。
正規表現を高速検索する場合 (grep 形式)
検索対象のディレクトリ内にソースブラウズ用のデータベースがない場合
関数呼び出しの関係やクラス階層をグラフ表示する必要がない場合
クラスのデータやメンバー関数を調べる必要がない場合
次の場合は、ソースブラウズモードを選択します。
コンパイルコマンドまたはメークファイルに --xsb オプションを追加して、ソースブラウズ用データベースを作成した場合
関数、クラス、構造体、共用体、レコードなどの言語要素や、その使用、定義、割り当て個所を検索する場合
関数呼び出しの関係やクラス階層をグラフ表示する場合
クラスのデータやメンバー関数を調べる場合
パターン検索モードでは、「ブラウズ」ウィンドウを使って正規表現や単純な文字列を検索することができます。
sb_init ファイルにリストアップされているすべてのディレクトリが検索されます(「データベースのインポート」を参照)。
図 3-2 に、パターン検索モードの「ブラウズ」ウィンドウを示します。ウィンドウ内の他の構成要素については、図 3-1 を参照してください。
「パターン」テキストフィールド |
検索する正規表現を入力します。 |
「ファイル」テキストフィールド |
検索用のファイルフィルタを指定します。 |
パターンを検索する場合は、次の手順に従ってください。
Sun WorkShop メインウィンドウで、「ブラウズ」⇒「パターン検索」を選択します。または、「ブラウズ」ボタンをクリックした後、「ブラウズ」ウィンドウで「パターン検索」ラジオボタンをクリックします。
「ブラウズ」ウィンドウのタイトルバーに正しいブラウズ対象ディレクトリが選択されていることを確認します。
正しくない場合は、「ブラウズ」⇒「ブラウズ対象ディレクトリを変更」を選択して、「パターン検索ディレクトリ」ダイアログボックスで正しいディレクトリを選択します。
「パターン」テキストフィールドに検索するパターンを入力します。
検索するシンボルの正確な名前がわからない場合は、ワイルドカード文字 (.、*、^、$) を使用することができます。「パターンの特殊文字」を参照してください。
「ファイル」テキストフィールドにフィルタを入力します。
デフォルトフィルタでは、現在のディレクトリにある.h、.c、.cc、.f で終わるすべてのファイルが検出されます。ワークセットを保存するたびに、新たに選択したフィルタが保存されます。
パターン検索では、複数のディレクトリの検索に sb_init ファイルを使用することができます。この場合、各ディレクトリにファイルフィルタが適用されます。
Return キーを押して「問い合わせ」⇒「一致するものを検索」を選択するか、「一致するものを検索」ボタンをクリックします。
「次の一致」、「前の一致」ボタンをクリックするか、メニュー項目を選択して、「一致」区画のリスト内を移動します。F5 キー、Shift + F5 キーを押しても、同じ操作が可能です。
「一致」区画内をクリックすると、エディタウィンドウにソースが表示されます。
一致項目が多すぎる場合は、「ファイル」テキストフィールドで、検索するファイルの種類を絞り込んでください。
エディタウィンドウに表示されているテキスト文字を検索することができます。エディタウィンドウのテキストをダブルクリックでコピーして、「ブラウズ」ウィンドウのテキストフィールドでマウスの中央ボタンをクリックすると、テキストがペーストされます。vi または XEmacs を使用している場合は、エディタウィンドウでテキストを選択してツールバーの「検索」ボタンをクリックすると、同じように検索を行うことができます。
検索条件を指定する際は、コードに出現するパターンを正確に入力するほか、特殊文字を使用することもできます。表 3-1 に、使用可能な特殊文字を示します。
表 3-1 パターンの特殊文字
文字 |
意味 |
例 |
---|---|---|
ピリオド (.) |
任意の文字 |
l.nes は lanes または lines の両方に一致 |
アスタリスク (*) |
任意の文字列 (パターンの最初の文字として使用する場合を除く) |
「file」を含み、任意の文字と () を伴う文字列に一致 (traffic_file_close()、file_save_popup など)。ただし「*file.」は、「file」で始まる文字列のみに一致 |
サーカムフレックス (^) |
行頭で一致 |
^tr* は、traffic、truck など、tr で始まる行に一致 |
ドル記号 ($) |
行末で一致 |
lanes$ は、lanes で終わる行に一致 |
たとえば、コード内で使用されている window_popup というインスタンスのうち、行頭にあるものだけを検索したい場合、次の問い合わせを入力します。
^window_popup*
サーカムフレックス (^) を指定すると、コードの行頭で一致する個所だけが検索されます。一方、アスタリスク (*) を指定すると、window_popup_name_objects、window_popup1_objects など、window_popup という文字列で始まる個所がすべて検索されます。
サーカムフレックスとドル記号で問い合わせ内容を囲むと、行全体が一致している個所だけが検索されます。
ソースブラウズモードでは、関数、クラス、構造体、共用体、レコードなどの言語要素や、その使用方法、定義、割り当て個所を検索することができます。また、関数呼び出しの関係やクラス階層をグラフ表示したり、クラスのデータやメンバー関数を検査することもできます。
ソースブラウザは、プログラムの静的構造が記述されたデータベースから必要な情報を取得して検索を行います。ソースブラウズを行うためには、コンパイルコマンドかメークファイルに --xsb オプションを指定して、ソースブラウズ用のデータベースを作成しておく必要があります。
ブラウザの機能は、データベースの使用・不使用や、使用するデータベースの種類によって、少しずつ異なっています。
コンパイラ生成データベース |
すべてのブラウザ機能を利用可能 |
---|---|
タグ生成データベース |
関数や大域変数の問い合わせと、関数呼び出しの表示が可能 |
データベースなし |
「パターン検索」モードしか利用することができない |
コンパイラ生成データベースの代わりにタグ生成データベースを使用すると、次のような利点があります。
ソースコードが不完全であったり、構文上の誤りがあるためにソースコードをコンパイルできない場合でも、タグデータベースは生成される
タグデータベースは、コンパイラ生成データベースを生成するよりも短時間で生成される
タグデータベースは、コンパイラ生成データベースよりもサイズが小さい
ソースブラウザ用のオプションを指定してソースファイルをコンパイルすると、ファイルの情報を格納したデータベースが作成されます。ソースブラウザは、このデータベースを検索して問い合わせに応答します。
コンパイラ生成データベースを作成すると、すべてのブラウズ機能を利用することができます。
ブラウズ用データベースを生成するには、使用するメークファイルにソースブラウザ用オプションを指定します。
言語 |
ソースブラウザ用のオプション |
---|---|
C++ |
-xsb または -sb |
ANSI C |
-xsb |
FORTRAN 77 |
-xsb または -sb |
アセンブラ |
-b |
タグデータベースを使用すると、コンパイルを行わないで、簡単にソースファイルをブラウズすることができます。このデータベースは、ソースファイルの字句解析に基づいています。すべての言語の構造が正しく認識されるわけではありませんが、コンパイルすることができないファイルでも使用可能です。
ソースブラウズタグの形式は、ctag とは異なっています。ここで説明するタグは、ソースブラウズ専用の形式になっています。
タグデータベースを使用したブラウズには、次のような制限があります。
局所関数に関する問い合わせを発行することができない
クラスをブラウズすることができない
複雑な問い合わせを行う機能に制限がある
問い合わせをフォーカスする機能に制限がある
タグデータベースは、変数、型、関数の大域的な定義のみを認識し、関数呼び出しに関する情報を収集します。C++ のメンバーに対する関数呼び出しは、明示的に呼び出された場合に限り認識されます。
タグデータベースを作成する場合は、次の手順に従ってください。
「ブラウズ」ウィンドウで、「ブラウズ」⇒「タグデータベース作成」を選択します。
「タグデータベース作成」ダイアログボックスで、「了解」ボタンをクリックしてデフォルトのファイルフィルタを適用するか、検索対象ファイルの型を入力して 「了解」をクリックします。
タグデータベースが作成されます。
ソースファイルが複数のディレクトリに保存されている場合、それぞれのディレクトリでコンパイル処理を行うことになります。このため、ディレクトリごとに別々のソースブラウザが生成されます。
1 回のブラウズで検索されるデータベースは 1 つだけなので、現在のディレクトリにあるファイルしか検索されません。このデフォルト設定を変更するためには、データベースをインポートする必要があります。
複数のデータベースを、マージしないでインポートすることができます。sb_init ファイルを使用して複数のデータベースを読み込むと、このファイルが収められているディレクトリをブラウズすることができます。
データベースをインポートする場合は、次の手順に従ってください。
sb_init ファイルの格納場所を指定します。
コンパイル処理を行う各ディレクトリの sb_init ファイルに import コマンドを追加します。
import absolute_or_relative_pathname
absolute_or_relative_pathname には、パス名 (絶対パスまたは相対パス) を指定します。
SUNPRO_SB_INITFILE_NAME 環境変数に sb_init ファイルを設定します。
setenv SUNPRO_SB_INIT_FILE_NAME path to sb_init file/sb_init
path to sb_init file には、sb_init ファイルが入っているディレクトリのパスを指定します。
ソースツリー全体のソースファイルを検索したり、データベースをブラウズしたい場合には、インポートオプションを指定します。ソースツリー内の各ディレクトリの sb_init ファイルに import コマンドを追加してください。
sb_init ファイルは、パターン検索モードで、複数のディレクトリからソースファイルを検索する場合や、ソースブラウズモードで、複数のディレクトリからブラウザデータベース (オブジェクトファイルを保存) を検索する場合に使用します。このため、sb_init ファイルに import コマンドを指定して、ソースディレクトリとオブジェクトディレクトリの両方を検索することもできます。
図 3-3 に、ソースブラウズモードの「ブラウズ」ウィンドウを示します。ウィンドウの他の構成要素については、図 3-1 を参照してください。
「一致」リスト |
問い合わせる項目にフィルタを設定し、特定の使用例だけを検索することができます。選択可能な型には次のものがあります。 |
|
「一致するもの全部」 指定した項目に一致する項目をすべて表示 |
|
「指定項目の参照」 指定した項目の参照をすべて表示 |
|
「指定項目の定義」 指定した項目の定義をすべて表示 |
|
「指定項目への代入」 指定した項目への代入内容をすべて表示 |
「一致」テキストフィールド |
検索対象の問い合わせる内容を指定します。 |
「型」リスト |
問い合わせる項目にフィルタを設定することができます。選択可能な型には次のものがあります。 |
|
「全部」言語要素の型を制限しない |
|
「メンバー/フィールド」クラスメンバーまたはレコードフィールド |
|
「クラス/構造体/記録」クラス、構造体、または記録 |
|
「静的」静的記憶域を持つ関数または変数 |
|
「関数」関数 |
|
「記号的定数」記号名で参照される定数。ENUM メンバー、PARAMETER 文で定義した定数、セットメンバー、#define マクロ (引数あり・引数なし) など |
「スコープ」リスト |
ソースに含まれる特定の要素だけを検索します。シェル形式の式がサポートされています。選択可能な構成要素には次のものがあります。 |
|
「全部」指定した項目の検索範囲を制限しない |
|
「プログラム/ライブラリ」指定したプログラムまたはライブラリファイルの中だけを検索 |
|
「クラス/構造体」指定したクラスまたは構造体の中だけを検索 |
|
「関数」指定した関数の中だけを検索 |
|
「ソースファイル」指定したソースファイルの中だけを検索 |
-sb オプションや -xsb オプションを指定してアプリケーションをコンパイルします。
このオプションは、コンパイラに、ブラウズ用データベースを生成するように指示します。「ブラウザデータベースの生成」を参照してください。
「ブラウズ」⇒「ソースのブラウズ」を選択するか、Sun WorkShop メインウィンドウのツールバーで「ブラウズ」ボタンをクリックして「ブラウズ」ウィンドウを表示し、「ソースのブラウズ」ラジオボタンをクリックします。
「ブラウズ」ウィンドウのタイトルバーに正しいブラウズディレクトリが表示されていることを確認します。
ブラウズディレクトリが正しくない場合は、「ブラウズ」⇒「ブラウズ対象ディレクトリを変更」を選択した後、「ソースブラウザのデータベースディレクトリ」ダイアログボックスで、ソースブラウザデータベースが格納されているディレクトリを選択します。
複数のブラウズ用データベースディレクトリからファイルを検索できます。「複数のディレクトリの検索」を参照してください。
テキストフィールドに検索内容を入力して、「問い合わせ」⇒「一致するものを検索」を選択するか「一致するものを検索」ボタンをクリックします。
問い合わせの書式については、「問い合わせの書式」を参照してください。
一致、型、スコープのいずれかをプルダウンリストから選択して、検索で一致した項目の数を制限します。
このリストについては、「ソースブラウズモードのブラウズウィンドウ」を参照してください。問い合わせの制限については、Sun WorkShop オンラインヘルプの該当項目を参照してください。
次のいずれかの方法で、「一致」区画内を移動することができます。
マウスを使用する
「次の一致」ボタンや「前の一致」ボタンをクリックする
F5 キーや Shift + F5 キーを押す
メニュー項目を使用する
各一致項目の行には、ソースファイル名、行番号、その行のテキストが記載されます。一致項目は、定義ではじまり、宣言で終わるようにソートされています。定義と宣言の間には、その他の一致項目がリストアップされています。各グループ内では、ファイル名のアルファベット順に、行番号の小さいものから表示されます。
一致項目をクリックして、エディタウィンドウにソースを表示します。
コールグラファ、クラスグラファ、またはクラスブラウザを起動して、ソース内の関係を表示します。
ソースブラウズモードで問い合わせを行うと、検索フィールドに入力されたシンボル、文字列定数、検索パターンに一致する全項目が検索されます。
問い合わせに一致したコード内のシンボルはすべて「一致項目」と呼ばれます。
通常、予約語の問い合わせはできませんが、ANSI C や C++ 言語で定義された型名の問い合わせは可能です。たとえば、ANSI C や C++ のプログラムでは、int、float、double、long を問い合わせの対象に指定できます。ただし、Fortran のプログラムでは、integer や print の問い合わせはできません。
変数、関数、型、定数、マクロのいずれも検索可能です。ブラウズする対象が何であるか不明確な場合は、以前にプログラムで使用した main か他の識別子を選択して検索を開始してください。
コードのとおりに正確に名前や関数を入力するほか、ワイルドカード文字で文字列を指定することもできます。
テキストフィールドに入力する問い合わせには、表 3-2 のワイルドカード文字を使用します。
表 3-2 問い合わせの特殊文字
文字 |
意味 |
例 |
---|---|---|
ピリオド (.) |
任意の文字 |
.ehicle は、vehicle または Vehicle に一致 |
アスタリスク (*) |
任意の数の文字 (直前の文字のゼロ回以上の繰り返しを含む) |
vehi.* は、vehicle_length() など、vehi で始まるすべての文字列に一致。ただし、vehi* の場合、vehi には一致するが、vehicle_length() には一致しない |
二重コロン演算子 (::) は、C++ のメンバー関数または最上位関数を次のように修飾します。
多重定義された名前−異なった引数型として使用されている同一の名前
あいまいな名前−異なったクラスで使用されている同一の名前
class_name::function_name
class_name にはクラス名、function_name には関数名を指定します。
たとえば、hand::grasp のように指定します。
RW::ListPtr::insert() を検索するには、次の正規表現が可能です。
insert ListPtr::insert RW::ListPtr::insert
最初の 2 つの正規表現は、「.*::.*::insert」、「.*::ListPtr::insert」と同じであり、より多くのシンボルと一致します。insert は、「insert」という名前の関数またはメンバー関数すべてと一致します。「.*insert」と指定する必要はありません。
「ソースブラウズオプション」ダイアログボックス (図 3-4 を参照) では、次のものを指定できます。
アプリケーションの構築時に自動的に生成されるファイルを格納するキャッシュディレクトリ
構成ファイル (Sun WorkShop ツール群で生成されるものとユーザーが手作業で作成するものの両方) を格納するディレクトリ名
上記のディレクトリ名を指定すると、ソースブラウザエンジンに対して、環境変数 SUNWS_CACHE_NAME と SUNWS_CONFIG_NAME がそれぞれ設定されます。
キャッシュディレクトリは自動的に再生成されるため、ディスク容量を節約するために削除してもかまいません。ただし、構成ファイルは再生成されないので、削除することはできません。
SUNWS_CACHE_NAME 変数や SUNWS_CONFIG_NAME 変数が、存在しないディレクトリに設定されている場合は、カスタムディレクトリを指定しても、デフォルトのディレクトリを選択した状態でダイアログボックスが表示されます。
「デフォルトのキャッシュディレクトリを使用」ラジオボタン |
デフォルトのキャッシュディレクトリ (SunWS_cache) を使用します。 |
「カスタムのキャッシュディレクトリ」ラジオボタン |
カスタムキャッシュディレクトリを使用します。このラジオボタンを選択すると、ディレクトリ名を指定するためのテキストフィールドが表示されます。テキストフィールドには、ファイル名だけを入力してください (パスを含まない)。 |
「デフォルトの構成ディレクトリを使用」ラジオボタン |
デフォルトの構成ディレクトリ (SunWS_config) を使用します。 |
「カスタムの構成ディレクトリ」ラジオボタン |
カスタム構成ディレクトリを使用します。このラジオボタンを選択すると、ディレクトリ名を指定するためのテキストフィールドが表示されます。テキストフィールドには、ファイル名だけを入力してください (パスを含まない)。 |
「了解」 |
変更を適用して、「ソースブラウズオプション」ダイアログボックスを閉じます。 |
「適用」 |
変更を適用します。「ソースブラウズオプション」ダイアログボックスは開いたままです。 |
「取り消し」 |
変更を適用しないで「ソースブラウズオプション」ダイアログボックスを閉じます。 |
「ヘルプ」 |
「ソースブラウズオプション」ダイアログボックスに関するヘルプ情報を表示します。 |
コールグラファを使用すると、ANSI C、C++、Fortran で記述されたプログラムの関数呼び出しの関係をグラフ表示することができます。呼び出し元関数、呼び出し先関数の両方が表示されます。
関数呼び出しの関係を表示する場合は、ソースブラウズ用データベースが必要です。ソースブラウズ用データベースについては、「ソースブラウズ用データベース」を参照してください。
仮想関数をグラフ表示することはできますが、実際に呼び出される関数を特定することはできません。 たとえば、実際には b1::d() か b2::d() を呼び出す仮想関数 b::d() を main で呼び出す場合、どちらの関数が呼び出されているかは特定できません。グラフには、b::d() を呼び出している main が表示されますが、main と b1::d()、main と b2::d() の関連性は示されません。
「コールグラファ」ウィンドウには、関数やサブルーチンの呼び出しの関係がグラフ表示されます。図 3-5 を参照してください。
「コールグラファ」ウィンドウ内のノードの背景、コールグラフ区画の背景、ノードのボックスの枠、ノードのボックス内のテキスト、ノード間の矢印に使う色を変更したい場合は、WORKSHOP リソースファイルを編集します。「「コールグラファ」ウィンドウと 「クラスグラファ」ウィンドウの色」を参照してください。色の設定を変更すると、同じ設定が「コールグラファ」ウィンドウと「クラスグラファ」ウィンドウの両方に適用されます。「クラスグラファ」ウィンドウについては、「「クラスグラファ」ウィンドウ」を参照してください。
「グラフ」メニュー |
関数呼び出しのグラフ表示を変更するコマンドを選択できます。 |
「ノード」メニュー |
表示されたノードを変更するコマンドを選択できます。 |
「関数」テキストフィールド |
グラフ表示したい関数やサブルーチンを入力します。「関数」テキストフィールドの右横の矢印ボタンを押すと、以前にグラフ表示した関数やサブルーチンの履歴が一覧表示されます。 |
「追加」ボタン |
指定された関数を持つノードをコールグラフ区画に追加します。 |
「検索」ボタン |
グラフ区画内を移動して、指定された関数やサブルーチンのノードを表示します。 |
コールグラフ区画 |
ソース内の関数やサブルーチンの呼び出しの関係をグラフ表示します。複数の関数やサブルーチンを選択してコールグラフ区画に再配置することもできます。 |
「左を展開」ボタン |
選択された関数ノードを直接呼び出すノード (1 レベル上の親) をすべて表示します。 |
「右を展開」ボタン |
選択された関数やサブルーチンノードから直接呼び出されるノード (1 レベル下の子) をすべて表示します。 |
「両方を展開」ボタン |
選択された関数ノードを直接呼び出すノードと直接呼び出される関数ノード (1 レベル上の親と 1 レベル下の子) をすべて表示します。ノードをダブルクリックしても同じ処理が実行されます。 |
「左を消去」ボタン |
選択されたノードを直接呼び出すノード (1 レベル上の親) をすべて非表示にします。 |
「右を消去」ボタン |
選択されたノードから直接呼び出されるノード (1 レベル下の子) をすべて非表示にします。 |
「ソース表示」ボタン |
選択されたノードが含まれているソースファイルをエディタウィンドウに表示します。 |
メッセージ表示領域 |
表示されているノードの数、追加されたノードの数、表示されていないノードの数、エラーメッセージなどを表示します。 |
関数またはサブルーチンをグラフ表示するには、次の手順に従ってください。
「ブラウズ」ウィンドウの「ソースをブラウズ」ラジオボタンをクリックします。
「ブラウズ」ウィンドウのタイトルバーに正しいブラウズディレクトリが表示されていることを確認します。
ブラウズディレクトリが正しくない場合は、「ブラウズ」⇒「ブラウズ対象ディレクトリを変更」を選択して、「ソースブラウザのデータベースディレクトリ」ダイアログボックスを表示します。ここで、ソースブラウザデータベースが格納されているディレクトリを選択してください。
「ブラウズ」⇒「関数呼び出しをグラフ表示」を選択するか、「デバッグ」ウィンドウに表示されたソースコードから関数を選択して、「ブラウズ」⇒「関数呼び出しをグラフ表示」を選択します。
テキストフィールドに関数またはサブルーチンの名前を入力して、「追加」ボタンか Return キーを押します。
テキストフィールドに関数またはサブルーチンの名前が入力されていないと、デフォルトで main が設定されます。
関数またはサブルーチンに関する情報を表示するには、次の方法があります。
ノードをクリックする
コールグラフ区画の下にあるボタンをクリックする
グラフに追加されたノード数と表示されているノード数がウィンドウのメッセージ表示領域に表示されます。
「ノード」メニューから他の表示オプションを選択する
ノードの表示・非表示、展開・消去などを選択できます。「ノードの表示と非表示」を参照してください。
グラフ区画でクラスを選択して「ノード」メニューから「ソース表示」を選択する
クラスのソースが表示されます。
「グラフ」メニューのコマンドでは、コールグラフの表示を変更できます (「コールグラファ、クラスグラファのレイアウト変更」を参照)。「グラフの印刷」で説明する手順に従って、コールグラフを印刷することもできます。
クラスグラファを使用すると、C++ プログラムのクラスの継承構造をグラフ表示することができます。
「クラスグラファ」ウィンドウには、クラス階層がグラフ表示されます。図 3-6 を参照してください。
「クラスグラファ」ウィンドウ内のノードの背景、クラスグラフ区画の背景、ノードのボックスの枠、ノードのボックスのテキスト、ノード間の矢印に使う色を変更したい場合は、WORKSHOP リソースファイルを編集します。色の設定を変更すると、同じ設定が「クラスグラファ」ウィンドウと「コールグラファ」ウィンドウの両方に適用されます。色の変更については、「「コールグラファ」ウィンドウと 「クラスグラファ」ウィンドウの色」を参照してください。また、「コールグラファ」ウィンドウについては、「「コールグラファ」ウィンドウ」を参照してください。
「グラフ」メニュー |
クラス階層のグラフ表示を変更するコマンドを選択できます。 |
「ノード」メニュー |
表示されたノードを変更するコマンドを選択できます。 |
「クラス」テキストフィールド |
グラフ表示したいクラスを入力します。「クラス」テキストフィールドの右横の矢印ボタンを押すと、以前にグラフ表示したクラスの履歴が一覧表示されます。 |
「追加」ボタン |
指定されたクラスのノードをクラスグラフ区画に追加します。 |
「検索」ボタン |
クラスグラフ区画内を移動して、指定されたクラスのノードを表示します。 |
クラスグラフ区画 |
クラス階層をグラフ表示します。 |
「左を展開」ボタン |
選択されたクラスの親クラス (1 レベル上の親) をすべて表示します。 |
「右を展開」ボタン |
選択されたクラスの子クラス (1 レベル下の子) をすべて表示します。 |
「両方を展開」ボタン |
選択されたクラスの親クラスと子クラス (1 レベル上の親と 1 レベル下の子) をすべて表示します。 |
「左を消去」ボタン |
選択されたクラスの親クラス (1 レベル上の親) をすべて非表示にします。 |
「右を消去」ボタン |
選択されたクラスの子クラス (1 レベル下の子) をすべて非表示にします。 |
「ソース表示」ボタン |
選択されたクラスが含まれているソースファイルをエディタウィンドウに表示します。 |
メッセージ表示領域 |
表示されているノードの数、追加されたノードの数、表示されていないノードの数のほか、エラーメッセージも表示します。 |
クラス階層をグラフ表示するには、次の手順に従ってください。
「ブラウズ」⇒「クラスをグラフ表示」を選択するか、ソースコードまたはデバッグウィンドウでクラスを選択してから「ブラウズ」⇒「クラスをグラフ表示」を選択します。
テキストフィールドにクラスの名前を入力して「追加」ボタンをクリックするか Return キーを押します。
クラスに関する情報を表示する方法には、次のものがあります。
ノードをクリックする
クラスグラフ区画の下にあるボタンをクリックする
グラフに追加されたノード数と表示されたノード数がウィンドウのメッセージ表示領域に表示されます。
「ノード」メニューから他の表示オプションを選択する
ノードの表示・非表示、展開・消去などを選択できます。「ノードの表示と非表示」を参照してください。
クラスグラフ区画でクラスを選択して「ノード」メニューから「ソース表示」を選択すると、クラスのソースが表示されます。
「グラフ」メニューのコマンドでは、クラスグラフの表示を変更することができます (「コールグラファ、クラスグラファのレイアウト変更」を参照)。「グラフの印刷」で説明する手順に従って、クラスグラフを印刷することもできます。
2 つのグラファウィンドウの「グラフ」メニュー、「ノード」メニューのコマンドでは、グラフ表示の倍率、ノードの展開・消去、表示・非表示の切り替え、グラフの印刷を行うことができます。
倍率の変更やノードのレイアウトの再配置によって、グラフ表示を変更することができます。全体が表示されるようにグラフ表示を縮小したり、ウィンドウのサイズに合わせることもできます。
グラフ表示を拡大するには、「グラフ」⇒「拡大」を選択します。全体を確認するには、スクロールバーを使うか、ウィンドウのサイズを変更します。この「拡大」 コマンドでグラフを段階的に拡大することができます。
グラフを縮小するには、「グラフ」⇒「縮小」を選択します。区画上の 1 個の点になるまで縮小することができます。判読可能なサイズに戻すときは、「サイズをリセット」 コマンドを実行します。
グラフ表示全体を確認するには、「グラフ」⇒「ウィンドウに合わせる」を選択します。すると、区画のサイズに合わせてグラフが拡大または縮小します。ウィンドウのサイズを変更する場合に「ウィンドウに合わせる」を選択すると、区画の新しいサイズに合わせてグラフ表示の大きさが変わります。
グラフ表示の倍率を元に戻すには、「グラフ」⇒「サイズをリセット」を選択します。すると、グラフ表示の倍率が変更前の状態に戻ります。区画内のグラフ表示の位置は、スクロールバーを使って確認することができます。
関係のあるノードだけを表示して、複雑なグラフ表示を単純化することができます。たとえば、接続ノードを持つノードや一方向にしか接続ノードを持たないノードだけを表示することができます。
展開可能なノードは、太い線のボックスで表示されています。このようなノードをダブルクリックすると、「両方を展開」を選択した場合と同様、子ノードと親ノードの両方が表示されます。
ノードを展開するには、次の手順に従ってください。
Shift キーを押したまま、各ノードをマウスでクリックして、ノードを選択します。
「ノード」メニューから「展開」コマンドを選択します。ノードをダブルクリックすると、そのノードだけが両方向に展開します。
データベース内のノードをすべて表示するには、「ノード」⇒「全部表示」を選択します。
以前のノードを復元するには、次の手順に従ってください。
関数またはクラスのテキストフィールドの末尾にある矢印ボタンをクリックして、履歴リストを開きます。
関数名またはクラス名をクリックします。
区画内にノードが復元されます。
区画に再表示されるのは、選択された項目の元のノードだけです。選択されたノードの他のノードとの関係は、再構築する必要があります。
ノードを非表示にするには、「ノード」メニューから次のコマンドを選択します。
「選択項目を隠す」 |
選択したノードを非表示にします。 |
「非選択ノードを隠す」 |
選択していないノードを非表示にします。 |
「未接続ノードを隠す」 |
接続ノードを持たないノードをすべて非表示にします。ノードの選択は不要です。 |
区画からすべてのノードを消去するには、「ノード」⇒「全部消去」を選択します。
次の項目について、デフォルトのオプションを設定することができます。
ノードを縦方向に表示 - デフォルトでは、横方向にノードが表示されます。
ノードの接続を示す線を矢印に変更 - ノード間のフローの方向が明確になります。
関数名を 2 つの形式で表示 - 長形式名と短形式名を表示することができます。長形式では、関数名と引数型の識別名が表示されます。
短形式 |
handler_load_save |
長形式 |
handler_load_save (unsigned long, inputevent) |
ノードのレイアウトを変更するには、次の手順に従ってください。
「グラフ」⇒「オプション」を選択します。
「グラフの向き」 |
横方向または縦方向 |
「矢印を使用」 |
使用または不使用 |
「関数名」 |
短形式または長形式 (コールグラファのみ) |
「了解」をクリックします。
レイアウトを取り消すには、「グラフ」⇒「レイアウトをリセット」を選択します。すると、グラフ表示に含まれるすべてのノードが元の位置に戻ります。ノードを選択してグラフ区画の他の位置にドラッグすることもできます。
グラフ内の複数のノードを選択するには、Shift キーを押しながら各ノードをマウスの左ボタンでクリックします。
「コールグラファ」ウィンドウや「クラスグラファ」ウィンドウのグラフを印刷することができます。
グラフを印刷するには、次の手順に従ってください。
クラスブラウザでは、次の操作を実行することができます。
クラスのブラウズ
クラスリストとデータ関数のメンバーを表示します。クラスのインタフェースと相互関係を確認することができます。
クラスの関係の確認
クラスを選択して、その基底クラス、派生クラス、フレンドクラスを確認します。また、現在のクラスで参照されているクラス、構造体、共用体をブラウズします。
クラスのグラフ表示
「クラスブラウザ」ウィンドウで選択されているクラスのクラス階層をグラフ表示します。
ソースの表示
エディタウィンドウに特定のクラスのソースを表示します。
「クラスブラウザ」ウィンドウ (図 3-7) を開くと、現在のソースブラウズ用データベースに格納されている Class 型、Struct 型のクラス全部を一覧できます。
「項目」リストの右横の 2 つのチェックボックスを使用すると、クラスの型全部を表示したり、クラスと構造体だけを表示したり、共用体だけを表示することができます。
「クラスブラウザ」ウィンドウには、クラスとそのメンバー関数、フレンド関数に関する情報が表示されます。ソースコードとライブラリのクラスを調べると、クラスの定義や使用方法が分かります。図 3-7 に、「クラスブラウザ」ウィンドウを示します。
「クラス」メニュー |
新しい「クラスブラウザ」ウィンドウやクラスのソースを表示するコマンドや、「クラスブラウザ」ウィンドウを閉じるコマンドがあります。 |
「表示」メニュー |
メンバー関数とフレンド関数のリストを表示します。 |
「名前」テキストフィールド |
クラス名、構造体名、共用体名を入力します。テキストフィールドの右横の矢印をクリックすると、以前に入力した項目が一覧表示されます。 |
「ブラウズ」ボタン |
クラスに関する情報を表示区画に表示します。 |
「項目」リスト |
検査可能なクラス型をすべて表示します。リスト内のクラスをクリックして選択すると、そのクラス名が「名前」テキストフィールドに表示されます。「クラス/構造体」、「共用体」のチェックボックスでは、表示されるクラス型が決まります。 |
「クラス/構造体」チェックボックス |
ユーザー定義型と、クラスキー struct で宣言されたすべてのクラスを「項目」リストに表示します。C や C++ の構造体がすべて表示されます。メンバークラスと基底クラスは、デフォルトで公開になっています。 |
「共用体」チェックボックス |
クラスキー union で宣言されたクラスを「ブラウザ」リストに表示します。異なる時点で異なる型のオブジェクトを表示することもできます。C や C++ の共用体がすべて表示されます。 |
表示区画 |
指定の言語要素に関する情報が表示されます。 |
「後方」ボタン |
以前に選択したクラスに関する情報が表示されます。 |
「前方」ボタン |
現在表示されているクラスの直後に選択したクラスに関する情報が表示されます。 |
メッセージ表示領域 |
「クラスブラウザ」ウィンドウでの操作に関するメッセージを表示します。 |
クラスをブラウズするには、次の手順に従ってください。
「ブラウズ」⇒「クラスのブラウズ」を選択するか、ソースコードまたは「デバッグ」ウィンドウでクラスを選択してから「ブラウズ」⇒「クラスのブラウズ」を選択します。
「名前」テキストフィールドにクラスの名前を入力するか、「項目」リストからクラスを選択します。さらに、「クラス/構造体」チェックボックスまたは「共用体」チェックボックスをクリックして、表示するクラスやデータ関数メンバーを制限した後、「ブラウズ」をクリックします。
クラスに関する情報を表示するには、「表示区画」に下線付きで表示されている基底クラスまたは派生クラスをクリックします。「後方」ボタンや「前方」ボタンを使用すると、現在表示されているクラスの前または後に選択したクラスに関する情報を再表示させることができます。
エディタウィンドウにソースを表示するには、「表示区画」でデータメンバーまたはフレンド関数を含む行の全体か一部を選択して、「ソース表示」をクリックします。
複数の「ブラウズ」ウィンドウを開くと、同時に複数のクラスを調べて比較することができます。同じブラウズセッションで開いた「クラスブラウザ」ウィンドウは、同じクラスリストを共有していますが、プロパティやクラス履歴は共有していません。
新しい「クラスブラウザ」ウィンドウを開くには、次のいずれかの操作を行います。
クラスブラウザで、「クラス」⇒「新規ウィンドウでブラウズ」を選択する
クラスグラファで、クラスノードを選択してから「表示」⇒「クラスブラウザで表示」を選択する
「ブラウズ」ウィンドウで、「ソースをブラウズ」を有効にして「ブラウズ」⇒「クラスのブラウズ」を選択する
図 3-8 に、ブラウザ、コールグラファ、クラスグラファ、クラスブラウザの相互関係を示します。
ブラウズの処理を終了して、すべての「ブラウズ」ウィンドウを閉じるには、「ブラウズ」ウィンドウで「ブラウズ」⇒「ブラウズ終了」を選択します。
処理を強制終了せずに、「ブラウズ」ウィンドウだけを閉じる場合は、「ブラウズ」⇒「閉じる」を選択します。