| Sun WorkShop の概要 |
付録 D
sbquery、sb_init、sbtagsによるソースのブラウズ
sbqueryユーティリティ : ソースコードをブラウズするためのコマンド行ユーティリティです。- ソースファイルに関するデータベース情報が複数のディレクトリに分散している場合の作業方法。
sbtagsコマンド。ソースファイルからブラウズ情報を短時間かつ簡単に収集する手段です。この付録は、主として、Sun WorkShop 内からも行える作業をコマンド行から行う方法を説明しています。ソースのブラウズに関する概念的な情報については、このマニュアルの第 5 章と オンラインヘルプを参照してください (オンラインヘルプには、どの Sun WorkShop ウィンドウからも、「ヘルプ」メニューからアクセスできます)。
sbqueryユーティリティ
sbqueryは、コマンド行から利用できるユーティリティです。デフォルトでは、sbqueryは現在の作業用ディレクトリ内のデータベースからシンボルを検索します。別のディレクトリに格納されているデータベースをブラウズする場合は、「sb_init ファイルと sb_init コマンド」を参照してください。コマンド行から問い合わせを発行するには、
sbqueryに続けて、コマンド行のオプションと引数、検索対象のシンボルを入力します。
%sbquery[options] symbols
sbqueryは、symbols に一致するものに関する情報、すなわち、シンボルを含むファイル、行番号、シンボルを含む関数、シンボルを含むソース行を一覧表示します。
sbqueryのオプション
sbqueryのコマンド行オプションを一覧表示するには、シェルプロンプトでsbqueryと入力します。表 D-1 に、このコマンドのオプションを示します。sbquery(1) のマニュアルページも参照してください。
表 D-1 sbqueryのオプション-patternsymbol先頭ダッシュ (-) など、特殊な文字を含むシンボルを問い合わせます。このオプションでは、コマンド行オプションのようなシンボルに対する問い合わせが可能です。たとえば、シンボル -helpを問い合わせる場合は、通常の-helpオプションと区別するために使用します。-break_lockデータベースのロックを解除します。索引ファイルの更新が異常終了した後に問い合わせを発行すると、データベースがロックされているというメッセージが表示され、この引数が必要になることがあります。このオプションを使用した後には、データベースの状態が不整合になる可能性があります (整合性を確保するには、データベースディレクトリを削除してから、プログラムを再コンパイルします)。 -files_only検索対象のシンボルが含まれるファイルだけを表示します。 -helpsbqueryコマンドの形式を表示します。sbqueryをオプションやシンボルなしで入力しても同じです。-help_focusディレクトリ内の特定の種類のプログラムのみを問い合わせるためのフォーカスオプションのリストを表示します。このオプションを使用して、プログラムや関数といった特定のコード単位に限定した問い合わせを発行できます。 -help_filterlanguage-help_filterだけを指定した場合は、フィルタオプションで使用できる言語の一覧を表示します。-help_filterlanguage の形式で入力した場合は、指定された言語で使用できるフィルタオプションの一覧を表示します。プログラム内の使用法に基づいてシンボルを探すには、フィルタオプションを使用します (表 D-2 を参照)。-max_memorysize索引ファイルの構築時、 sbqueryが一時ファイルを使用する前に割り当てる必要のあるメモリー容量の概算値 (メガバイト単位) を設定します、-no_case問い合わせで大文字と小文字を区別します。 -no_source一致したもののファイル名と行番号だけ表示し、一致したものを含むソース行を表示しません。 -no_updateコンパイルの後に問い合わせを発行するときに索引ファイルを再構築しません。このオプションを指定しないでコンパイルまたは再コンパイルの後に問い合わせを発行すると、データベースによって問い合わせの更新と処理が行われます。 -ofile問い合わせの出力を file に送信します。 -show_db_dirs問い合わせを発行したときに読み取られたデータベースディレクトリのリストを表示します。リストに含まれるのは、現在の作業ディレクトリ内のデータベースディレクトリと、 sb_initファイルのimportまたはexportコマンドで指定されたその他すべてのデータベースディレクトリです。-symbols_only検索パターン内のパターンに一致するシンボルのリストを表示します。問い合わせでワイルドカードを使用する場合に役立ちます。 -version現在のバージョン番号を表示します。 -sh_patternワイルドカードを含む問い合わせを発行するときにシェル形式の表現を使用します (デフォルト)。同じコマンド行で別のパターン検索を実行する場合に、このオプションを指定します (シェル形式のパターン検索については、 sh(1) を参照)。-reg_exprワイルドカードを含む問い合わせを発行するときに正規表現を使用します。このオプションを指定しないと、シェル形式のパターンとみなされます。 -literal問い合わせにワイルドカード表現を使用しません。別のワイルドカード方式からメタキャラクタを含む文字列を検索する場合に役立ちます。
検索を絞り込むためのオプションには、フィルタオプション (表 D-2) とフォーカスオプション (表 D-3) の 2 種類があります。
表 D-2 のフィルタオプションは、プログラム内でシンボルがどのように使用されているかに応じて、シンボルを検索するときに使用します。たとえば、フィルタオプションを使用しできます、検索対象を変数の宣言に限定できます。
%sbquery-help_filterlanguage
表 D-2 言語フィルタオプション ansi_cC sun_asアセンブリ言語 sun_c_plus_plusC++ sun_f77FORTRAN 77
表 D-3 のフォーカスオプションは、検索範囲を、特定のプログラム、関数、ライブラリなどの、特定のクラスのコードに限定します。
%sbqueryfocus-optionsymbol
注 - フォーカスオプションを 2 つ以上指定して、一致するものが複数見つかった場合は、一致したものが 1 つだけ返されます。
環境変数
環境変数は、
sbquery(および Sun WorkShop のソースブラウズ) の動作に影響する情報を提供します。
表 D-4 環境変数 HOMEログインディレクトリの名前 PWD現在のディレクトリのフルパス名 SUNPRO_SB_ATTEMPTS_MAXロックされたデータベースに対して索引ビルダーがアクセスを試みる最大回数 SUNPRO_SB_EX_FILE_NAMEsun_source_browser.exファイルの絶対パス名SUNPRO_SB_INIT_FILE_NAMEsb_initファイルの絶対パス名。sb_initについては、「sb_init ファイルと sb_init コマンド」を参照してください。
sb_initファイルとsb_initコマンドこの節では、ソースファイルに関するデータベース情報が複数のディレクトリに格納されている場合の作業方法について説明します。デフォルトでは、現在の作業用ディレクトリにデータベースが作成され、問い合わせを発行するとそのデータベースが検索されます。
Sun WorkShop のソースブラウズ機能、コンパイラ、
sbtagsは、sb_initテキストファイルを使用して、ソースブラウズ用データベースの構造に関する制御情報を取得します。ソースファイルに関するデータベース情報が複数のディレクトリに分散している場合は、sb_initを使用してください。
sb_initファイルは、SunWS_configディレクトリに置くようにしてください。このディレクトリから、ソースブラウズ機能やコンパイラ、sbtagsも実行するようにします。これらのツールは、sb_initファイルを探すとき、現在の作業用ディレクトリを検査します。デフォルトでは、現在の作業ディレクトリに対して
sb_initファイルの検索が行われます。別のディレクトリでsb_initファイルを検索するように Sun WorkShop とコンパイラに指示するには、環境変数SUNPRO_SB_INIT_FILE_NAMEを/<検索するディレクトリのパス>/sb_initに設定します。コマンドリファレンス
sb_initコマンドを使用するには、sb_initファイルにコマンドを追加します。sb_initファイルでは、次のコマンドのみ使用できます。
import
%importpathnameこのコマンドは、Sun WorkShop のソースブラウズモードで、現在の作業用ディレクトリ以外のディレクトリにデータベースを読み込むことができます。このため、異なるディレクトリにデータベースを分散できます。
たとえば、プロジェクト A のプログラマがプロジェクト B のディレクトリに書き込むこともその逆もできないように、管理権限を設定しようとしています。この場合、プロジェクト A とプロジェクト B は、それぞれ独自のデータベースを保持する必要があります。どちらのデータベースも、他方のプロジェクトのプログラマからは読み取りしかできず、書き込みはできません。
export
%exportprefix into pathこのコマンドは、コンパイラと
sbtagsが、Sun WorkShop のソースブラウズモードとコンパイラで使用される現在の作業用ディレクトリ以外のディレクトリに、ソースファイルのデータベースコンポーネントファイルを書き込むことを可能にします。prefix で始まる完全パス名の付いたソースファイルをコンパイラが処理した場合、生成されるブラウザ用データベース (
.bd) ファイルは必ず path に格納されます。
exportコマンドには path のimportコマンドが暗黙的に含まれているので、エクスポートされたデータベースコンポーネントは Sun WorkShop のソースブラウズモードで自動的に読み込まれます。
exportコマンドは、/usr/includeの#includeなど、同じファイルと関連付けられたデータベースファイルを単一のデータベースに配置してディスク空間を節約しながら、各プロジェクト用のデータベースを個々に保持することを可能にします。
sb_initファイルに複数のexportコマンドを含める場合は、範囲の広い順にコマンドを並べる必要があります。コンパイラは、sb_initファイルに記述されている順序でexportコマンドを読み取ります。
replacepath
%replacepathfrom-prefix to-prefixこのコマンドは、ソースブラウズ用データベース内のパス名を変更する方法を指定します。
一般に、from-prefix はオートマウンタのマウントポイント (オートマウンタが実際にファイルシステムをマウントする場所のパス名) であり、to-prefix はオートマウンタのトリガーポイント (開発者が使用する既知のパス名) です。
オートマウンタの使用方法は柔軟性に富んでおり、ホストによって異なることがあります。
オートマウンタの設定を元に戻すには、デフォルトの
replacepathコマンドを使用します。
%replacepath/tmp_mntこのためには、コマンドの第 1 引数にマウントポイント、第 2 引数にトリガーポイントを指定する必要があります。
automount-prefix
%automount-prefixmount-point trigger-point
automount-prefixコマンドを使用して、プログラムのコンパイルに使用されなかったマシン上でソースをブラウズできます。このコマンドは、automount-prefixのパス変換がコンパイル時に行われてデータベースに書き込まれる点を除けばreplacepathコマンドと同じです。
automount-prefixコマンドは、データベースに格納されている名前からどのオートマウンタの接頭辞を削除するかを定義します。オートマウンタがファイルシステムをマウントするディレクトリは mount_point です。trigger_point は、エクスポートされたファイルシステムにアクセスするための接頭辞であり、デフォルトは/です。データベース内のパスで問題が発生した場合、
automount_prefixコマンドとreplacepathコマンドのパス変換情報を使用して、ブラウズ中にソースファイルが検索されます。一見すると、両方のパスの検索は不可能と思われます。コンパイラの実行中に作成されたブラウザ用データベースには、各ソースファイルの絶対パスが格納されています。絶対パスがコンピュータ間で統一されていないと、問い合わせに応答するときに Sun WorkShop がソースファイルを表示できません。
- すべてのコンピュータですべてのソースファイルが同じマウントポイントにマウントされるようにする
- オートマウントされたパスでプログラムをコンパイルする。そうしたパスに対する参照があると、オートマウンタは別のコンピュータのファイルシステムを自動的にマウントします。
オートマウンタの設定を元に戻すには、デフォルトの
automount-prefixコマンドを使用します。
% automount-prefix/tmp-mnt /
automount-prefixコマンドが指定されていない場合に限り、デフォルトの規則が生成されます。オートマウンタの使用方法に関する詳細は、
automount(1M)のマニュアルページを参照してください。
cleanup-delayこのコマンドは、索引の再構築から関連するデータベースのガベージコレクトまでの時間を制限します。制限時間が経過すると、コンパイラは自動的に
sbcleanupを呼び出します。デフォルトでは 12 時間です。
sbtagsユーティリティ
sbtagsコマンドを使用して、ソースファイルからブラウズ情報を簡単に収集できます。この方法を利用すると、完全にコンパイルされていないプログラムに対しても最低限のブラウズ情報を収集できます。詳細は、sbtags(1) のマニュアルページを参照してください。
sbtagsコマンドは、コンパイルで入手可能な情報の一部を収集します。ただし、簡略化された情報では、一部のブラウズ機能に制限があります。sbtagsで生成されたデータベースでは、関数や変数に問い合わせを実行したり、関数の呼び出しをグラフィカルに表示したりできます。現在、
sbtagsで生成されるタグデータベースには次の制限があります。
- ローカル変数に関する問い合わせを発行できない
- クラスをブラウズできない
- クラスの関係をグラフィカル表示できない
- 複雑な問い合わせを発行する機能に制限がある
- 問い合わせを限定する機能に制限がある
- コンパイルされた情報よりも信頼性が低い
ファイルが変更されても、しばしば、再度読み取って変更をデータベースに取り込む必要がないことがあります。
sbtagsデータベースは、ソースファイルの字句解析に基づいています。このデータベースは、すべての言語構造を正しく識別するとは限りませんが、コンパイルされないファイルでも動作し、再コンパイルよりも高速に実行されます。
sbtagsは、型と関数の定義を認識し、関数呼び出しの情報を収集します。関数呼び出しの情報以外は収集されません。特に、複雑な問い合わせに関する他の意味情報は収集されません。
sbtagsの機能は、呼び出しのグラフィカル表示機能を除けば、ctagsやetagsと類似しており、定義とグラフィカル表示に関するデータベースへの直接の問い合わせと、パターン検索による問い合わせを組み合わせることができます。
sbtagで生成されたデータベースには、次の特徴があります。
- クラスブラウザとクラスグラファの機能を使用できない。
- データベースには、シンボルと文字列に関する情報がすべて格納されているとは限らない。関数、クラス、型、関数呼び出しに関する情報は格納されている。
sbtagsプログラムはコンパイラよりも高速に動作するため、時間の節約になる。- データベースのサイズは、ソースコードのサイズよりもずっと小さい。
- データベースの内容については、意味上の正確さが保証されない (
sbtagsプログラムが実行するのは単純な構文解析と意味解析だけであり、エラーが発生することもあるため)。- コードが不完全であるか意味に誤りがあるためにソースコードをコンパイルできなくても、データベースが生成される。
sbtagsを使用してブラウズデータベースを生成するには、コマンド行から次のコマンドを入力します。
%sbtagsfile
|
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |