マニュアルページ cscope.1




名前

     cscope - 対話形式による C プログラムの検査


形式

     cscope [options] files...


機能説明

     cscope は、コードの特定の要素について C 言語のソースファイル
     を検査するための画面処理用ツールです。

     デフォルトでは、現作業ディレクトリに存在する C ( .c と .h)、
     lex  (.l)、 yacc (.y) のソースファイルを検査します。また、起
     動時にコマンド行で検査対象にするソースファイルの名前を指定す
     る こ と が できます。どちらの場合でも、現作業ディレクトリで
     #include ファイルが見つからなければ、 cscope は標準のディ レ
     クトリで検索を行います。 cscope はシンボル相互参照 (デフォル
     トでは cscope.out ) を使って、ファイル内の関数、関数呼 び 出
     し、マクロ、変数、前処理シンボルの場所を突き止めます。

     検査対象のプログラムを構成するソースファイルに対して初めて使
     用されたとき、 cscope はシンボル相互参照を作成します。それ以
     降の呼び出しでは、ソースファイルの内容が変更されているか、ま
     たは指定されたソースファイルが異なっている場合にかぎり、相互
     参照を再作成します。相互参照を再作成する場合は、変更が な い
     ファイルのデータは古い相互参照からコピーされるため、初めて作
     成する場合よりも高速になります。

     次のオプションを自由に組み合わせることができます。

     -b             相互参照の作成だけを行います。

     -C             検索時に大文字 / 小文字を無視します。

     -c             相互参照ファイルで ASCII 文字だけを使用 し ま
                    す。すなわち、データを圧縮しません。

     -d             相互参照を更新しません。

     -e             1 つのファイルの処理後、次のファイルを処理 す
                    る 前に現れる ^e コマンド・プロンプトを抑止し
                    ます。

     -f reffile     相互参照ファイルの名前として、デフォ ル ト の
                    cscope.out の代わりに reffile を使用します。

     -Iincdir       #include ファイルの名前が  / で始まって お ら
                    ず、 コマンド行にも下記の namefile にも指定さ
                    れていない場合に、ヘッダファイルの標準の格 納
                    場 所である INCDIR (通常は /usr/include) で探
                    す前に、 incdir で探します ( #include ファ イ
                    ル は二重引用符と山括弧のどちらでも指定できま
                    す)。 #include ファイルは、現作業ディレ ク ト
                    リ、  incdir で指定したディレクトリ、標準の格
                    納場所の順に検索されます。複数の -I オプ ショ
                    ン を指定した場合は、コマンド行で最初に現れた
                    ディレクトリから順に検索されます。

     -inamefile     デフォルトのファイル ( cscope.files ) の代 わ
                    り に、 namefile に指定した名前のソースファイ
                    ルを検査します ( namefile 複数のファイル 名
                    を 指定する場合は、それぞれをスペース、タブ、
                    または復帰改行 (NEWLINE) で区切ってくだ さ い
                    )。このオプションを指定すると、コマンド行引数
                    として指定したすべてのファイルが無視 さ れ ま
                    す。

     -L             -num pattern オプションとともに使用し、1 回の
                    検索を行なって、その結果を 1 行に表示します。

     -l             行処理向きインタフェース (後述の「行処理向 き
                    インタフェース」を参照)。

     -num pattern   入力フィールド num (0 からカウントする) に 進
                    み、 pattern を検索します。

     -Ppath         相互参照ファイル (作成済みのもの) に現れる 相
                    対 パス名の前に path を付けます。これにより、
                    その相互参照を作成したディレクトリに移動し な
                    くてもすむようにします。このオプションは、 -d
                    オプションを使用した場合にだけ有効です。

     -pn            ファイルパスの後ろから n 個の構成要素を表示し
                    ます。デフォルト値は 1 で、パス名の最後の構成
                    要素だけが表示されます。ファイル名をまった く
                    出力しない場合は 0 を使用してください。

     -sdir          追加のソースファイルを dir で探します。コマン
                    ド 行引数としてソースファイルを指定した場合、
                    このオプションは無視されます。

     -T             C のシンボルと照合するときに先頭の 8 文字だけ
                    を使用します。ピリオド (.) 以外の特殊文字を含
                    む正規表現は、その最短の長さが 8 文字より長い
                    ときにはどのシンボルとも一致しません。

     -U             ファイルの日付をチェックしません (どのファ イ
                    ルにも変更がないと見なします)。

     -u             相互参照ファイルを無条件に作成します (すべ て
                    のファイルが変更されたものと見なします)。

     -V             画面の先頭の行に cscope のバージョン番号を 表
                    示します。

     -I 、 -p 、 -T の各オプションは、ファイル cscope.files の 中
     にも置くことができます。

  初期検索の要求
     相互参照の準備が完了すると、 cscope は次のメニューを表示しま
     す。

          Find this C symbol:
          Find this global definition:
          Find functions called by this function:
          Find functions calling this function:
          Find this text string:
          Change this text string:
          Find this egrep pattern:
          Find this file:
          Find files #including this file:

     Tab キーを繰り返し押して希望する入力フィールドに移動し、検索
     テキストを入力して Return キーを押してください。

  検索後の要求
     検索が正常に行われると、次のいずれかの文字を使用できます。

     1-9        該当する行番号によって参照されるファイルを編集 し
                ます。
     スペース         一致する次の行を表示します。
     +          一致する次の行を表示します。
     -          一致する前の行を表示します。
     ^e         表示されたファイルを順番に編集します。
     >          表示された行の並びをファイルに追加します。
     |          パイプを介し、すべての行をシェルコマンドに渡し ま
                す。

     次のコマンドはいつでも使用することができます。

     Tab        次の入力フィールドに移動します。
     RETURN     次の入力フィールドに移動します。
     ^n         次の入力フィールドに移動します。
     ^p         1 つ前の入力フィールドに移動します。
     ^y         最後に入力したテキストを検索します。
     ^b         1 つ前の入力フィールドに移動し、パターンを検索 し
                ます。
     ^f         次の入力フィールドに移動し、パターンを検 索 し ま
                す。
     ^c         検索時に大文字 / 小文字を無視するか区別するかを切
                り 替えます (大文字 / 小文字を無視する場合、 FILE
                の検索時には File と file も一致します)。
     ^r         相互参照を再作成します。
     !          対話型シェルを起動します ( cscope に戻るには、 ^d
                と入力します)。
     ^l         画面を再表示します。
     ?          cscope の各コマンドについてのヘルプ情報を表示しま
                す。
     ^d         cscope を終了します。

     注意 : 検索対象のテキストの最初の文字が上記のコマンドのい ず
     れかに一致するときは、その前で \ (バックスラッシュ) をタイプ
     してエスケープしてください。

  テキストの置換
     変更対象のテキストを入力すると、新しいテキストを入力するよう
     に求められ、古いテキストを含む行が表示されます。次のコマンド
     を使って、変更する行を選んでください。

     1-9        特定の行を変更対象の行としてマークまたはマーク 解
                除します。
     *          表示されたすべての行を変更対象の行としてマーク ま
                たはマーク解除します。
     スペース         次の行を表示します。
     +          次の行を表示します。
     -          1 つ前の行を表示します。
     a          すべての行を変更対象としてマークします。
     ^d         マークした行を変更して終了します。
     Esc        マークした行を変更しないで終了します。
     !          対話型シェルを起動します ( cscope に戻るには、 ^d
                と入力します)。
     ^l         画面を再表示します。
     ?          cscope の各コマンドについてのヘルプ情報を表示しま
                す。
  特殊キー
     使用する端末に vi(1) 上で機能する矢印キーがある場合は、そ れ
     らを使って入力フィールドの間を移動することができます。たとえ
     ば、1 つ前の入力フィールドに移動するために Tab キーを繰り 返
     し押すよりも、上向き矢印キーを使うと便利です。 Clear (クリア
     ) キー、 Next (次) キー、 Prev (前) キーがあれば、それぞれが
     コマンド ^l、+、- として機能します。

  行処理用インタフェース
     -l オプションを指定すると、画面処理用インタフェースが使用 で
     きない場合 (別の画面処理用プログラムから使用する場合など) で
     も、 cscope を使用できます。
     cscope は、フィールド番号 (0 から開始) から始まり、直後に 検
     索パターンが続く入力行の準備ができると、プロンプト >> を表示
     します。たとえば、 1main とすると、 main 関数の定義が検索 さ
     れます。
     検索を 1 回だけ行いたい場合は、 -l オプションの代わりに、 -L
     オ プ ションと -num pattern を使用してください。その場合、>>
     プロンプトは表示されません。
     -l の場合、 cscope は参照行の数を出力します。
                    cscope: 2 lines
     参照箇所を見つけるたびに、 cscope はそのファイル名、関数名、
     行番号、その行のテキストをスペースで区切って、1 行に表示しま
     す。たとえば、次のように出力します。
                    main.c main 161 main(argc, argv)

     画面処理用インタフェースとは異なり、単一の参照箇所を表示する
     ためにエディタが呼び出されることはありません。
     r コマンドを使用すれば、データベースを再構築できます。
     ファイルの終端を検出するか、行の先頭で ^d または q が入力 さ
     れると cscope は終了します。


環境変数

     EDITOR         使用するエディタ。デフォルトでは vi(1) が使用
                    されます。
     INCLUDEDIRS    #include ファイルを検索するディレクトリのコロ
                    ンで区切った並び。
     HOME           ホームディレクトリ。ログイン時に自動的に設 定
                    されます。
     SHELL          使用するシェル。デフォルトでは sh(1) に設定さ
                    れます。
     SOURCEDIRS     追加のソースファイルを検索するディレクトリ の
                    コロンで区切った並び。
     TERM           端末タイプ。画面ターミナルでなければなりま せ
                    ん。
     TERMINFO       端末情報が入ったディレクトリのフルパス名。 使
                    用 中の端末が標準のディレクトリ terminfo にな
                    い場合は、 curses(3X) および terminfo(4) を参
                    照して、独自の端末記述を作成してください。
     TMPDIR         一時ファイル用ディレクトリ。デフォルトで は、
                    /var/tmp に設定されます。
     VIEWER         使用するファイル表示プログラム ( pg など)。こ
                    の変数の値は、 EDITOR
                     (上記) の値に優先して使用されます。
     VPATH          コロンで区切ったディレクトリの並び。各ディ レ
                    ク トリは、下位に同じディレクトリ構造を持って
                    います。 VPATH が設定されていると、 cscope は
                    指 定されたディレクトリでソースファイルを検索
                    します。この変数が設定されて い な い 場 合、
                    cscope は現作業ディレクトリだけで検索を行いま
                    す。


ファイル

     cscope.files   オプション -I 、 -p 、 -T と、ソースファイ ル
                    の 並 び ( -i オプションによって上書きされる)
                    が入っているデフォルトファイル。

     cscope.out     シンボルの相互参照ファイル。現作業ディレク ト
                    リ に作成できない場合は、ホームディレクトリに
                    作成されます。

     ncscope.out    新しい相互参照を古い相互参照に上書きする前 の
                    一時ファイル。


関連項目

C 

注意事項

     cscope は、次の形式の関数定義を認識します。

          fname blank ( args ) white arg_decs white {

     fname      関数名

     blank      ゼロ個以上のスペースまたはタブ (復帰改行は含ま な
                い)

     args       " および復帰改行を含まない任意の文字列

     white      ゼロ個以上のスペース、タブ、または復帰改行

     arg_decs   ゼロ個以上の引数宣言 ( arg_decs にはコメントや 空
                白類を含むことができる)

     関数の宣言は、行の先頭から始める必要はありません。関数名の前
     には、戻り型を置くことができます。その場合でも、 cscope は宣
     言を認識します。これ以外の形式の関数定義は認識しません。

     メニューオプション Find functions called by  this  function:
     による検索結果の出力の Function 欄には、行で呼び出された最初
     の関数だけが表示されます。たとえば、
           ee(())
           {{
                rreettuurrnn ((ff(()) ++ gg(())));;
           }}
     この場合、結果の出力は次のとおりです。
           FFuunnccttiioonnss ccaalllleedd bbyy tthhiiss ffuunnccttiioonn:: ee

           FFiillee FFuunnccttiioonn LLiinnee
           aa..cc  ff    33 rreettuurrnn((ff(()) ++ gg(())));;

     #if 文の内部に中括弧 {} があると、関数定義または関数呼び出し
     が認識されないことがあります。同様に、変数が定義として、誤っ
     て認識されることがあります。

     次のように、 typedef で定義された名前が前処理文の前 に あ る
     と、それが大域定義として誤って解釈されることがあります。
           LLDDFFIILLEE **
           ##iiff AARR1166WWRR

     また、次のような前処理文により、大域定義が認識されないことが
     あります。
           cchhaarr ffllaagg
           ##iiffddeeff AALLLLOOCCAATTEE_<U>_SSTTOORRAAGGEE
                == --11
           ##eennddiiff
           ;;


     関数内部の関数定義は、関数呼び出しと誤って認識されます。たと
     えば、
           ff(())
           {{
                vvooiidd gg(());;
           }}
     これは、g() の呼び出しと認識されます。

     cscope は、キーワード class を検索することで C++ のクラス を
     認識します。しかし、 struct もクラスであるとは認識しません。
     したがって、構造体内部のインライン・メンバーの関数定義を認識
     しません。さらに、 typedef 内にキーワード class を想定してい
     ないため、次のような場合の X は誤って定義として認識 さ れ ま
     す。
           ttyyppeeddeeff ccllaassss XX ** YY;;

     次のような演算子関数の定義は認識しません。
           BBooooll FFeeaattuurree::::ooppeerraattoorr====((ccoonnsstt FFeeaattuurree && ootthheerr))
           {{
                ......
           }}