ctags(1)
名前
ctags - ex および vi で使用するタグファイルの作成
形式
/usr/bin/ctags [-aBFtuvwx] [
-f tagsfile] file...
/usr/xpg4/bin/ctags [-aBFuvwx] [
-f tagsfile] file...
説明
ctags ユーティリティーは、C、C++、Pascal、FORTRAN、yacc(1)、および lex(1) の指定されたソースから ex(1) 用のタグファイルを作成します。タグファイルは、ファイルのグループにおける指定されたオブジェクト (この場合は関数と型定義) の位置を示します。タグファイルの各行には、オブジェクト名、それが定義されているファイル、およびオブジェクト定義のアドレス指定が含まれます。関数はパターンによって検索され、型定義は行番号によって検索されます。指定子は、行の個別のフィールドに指定され、スペースまたは TAB 文字で区切られます。タグファイルを使用すると、ex はこれらのオブジェクト定義を簡単に検索できます。
通常 ctags は、tags というファイルにタグの記述を入れます。これは、–f オプションによって変更にできます。
名前が .c または .h で終わるファイルは、C または C++ のソースファイルとみなされ、C または C++ ルーチンとマクロ定義が含まれていないか調べられます。名前が .cc、.C、または .cxx で終わるファイルは、C++ ソースファイルとみなされます。名前が .y で終わるファイルは、yacc ソースファイルとみなされます。名前が .l で終わるファイルは、lex ファイルとみなされます。これ以外のファイルは、まず Pascal または FORTRAN のルーチン定義が含まれていないか調べられます。これらの定義が含まれていないファイルは、再度 C 定義について検索されます。
タグ main は、C または C++ プログラムでは特別に処理されます。タグ formed は、file の先頭に M を付け、最後に .c、.cc .C、または .cxx があれば削除し、さらに先頭のパス名コンポーネントも削除することによって作成されます。これにより、複数のプログラムが置かれているディレクトリでも ctags を利用できます。
オプション
出力に関連するオプションの優先順位は、–x、–v、それから残りのオプションです。サポートしているオプションは、次のとおりです。
- –a
既存の tags ファイルに出力を追加します。
- –B
後方検索パターン (?. . . ?) を使用します。
- –f tagsfile
tags ではなく、tagsfile というファイルにタグの記述を入れます。
- –F
前方検索パターン (/. . . /) を使用します (デフォルト)。
- –t
型定義のタグを作成します。/usr/xpg4/bin/ctags は、デフォルトで、型定義のタグを作成します。
- –u
タグ内の指定したファイルを更新します。つまり、これらのファイルへの参照はすべて削除されて、ファイルに新しい値が追加されます。注意: このオプションを指定すると実行速度が遅くなります。通常、単に tags ファイルを作成し直す方が、速く実行できます。
- –v
標準出力上に関数名、ファイル名、およびページ番号をリストする索引を出力します (64 行のページを想定)。出力は、辞書編集方式の順にソートされるため、出力を sort –f に通しておくのがよいでしょう。
- –w
警告診断を抑制します。
- –x
オブジェクト名、各オブジェクトが定義されている行番号とファイル名、およびその行のテキストを作成して、標準出力に出力します。これは、オフラインで読み取ることのできる関数索引として出力可能な単純な索引です。
オペランド
次の file オペランドがサポートされています。
- file.c
.c 接尾辞で終了するベース名を持つファイルは、C 言語のソースコードとみなされます。
- file.h
.h 接尾辞で終了するベース名を持つファイルは、C++ 言語のソースコードとみなされます。
- file.f
.f 接尾辞で終了するベース名を持つファイルは、FORTRAN 言語のソースコードとみなされます。
例
使用例 1 アルファベット順にエントリを生成する
–v オプションを付けて ctags を使用すると、vgrind に対して必ずしも適切とはいえない順序でエントリが作成されます。結果をアルファベット順で生成するには、出力を sort –f に送るようにします。
example% ctags -v filename.c filename.h | sort -f > index
example% vgrind -x index
使用例 2 タグファイルを作成する
sourcedir をルートとするディレクトリ階層内に C ソースのタグファイルを構築するには、まず空のタグファイルを作成してから、find(1) を実行します。
example% cd sourcedir ; rm -f tags ; touch tags
example% find . \( -name SCCS -prune -name \\
'*.c' -o -name '*.h' \) -exec ctags -u {} \;
スペースは、ここで示されたとおりに正確に入力してください。
環境変数
ctags の実行に影響を与える環境変数 LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、および NLSPATH については、environ(5) を参照してください。
終了ステータス
次の終了ステータスが返されます。
- 0
正常終了。
- >0
エラーが発生した。
ファイル
- tags
出力タグファイル
属性
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
/usr/bin/ctags
|
|
使用条件
|
developer/base-developer-utilities
|
|
/usr/xpg4/bin/ctags
|
|
使用条件
|
system/xopen/xcu4
|
インタフェースの安定性
|
確実
|
標準
|
|
|
関連項目
ex(1), lex(1), vgrind(1), vi(1), yacc(1), attributes(5), environ(5), standards(5)
注
FORTRAN と Pascal の 関数、サブルーチン、およびプロシージャは、非常に単純な方法で認識されます。ブロック構造とみなして処理されることはありません。異なるブロックに同じ名前の 2 つの Pascal プロシージャがある場合、一方しか判別されません。
C または Pasca 関数、および FORTRAN 関数を検索するかどうかを決定する手法は、あまり出来の良いものではありません。
ctags ユーティリティーは、#ifdefs を認識しません。
ctags ユーティリティーは、Pascal の型を把握している必要があります。型定義の検出は、入力の形式が適切かどうかによります。–tx を使用すると、型定義の最後の行だけが示されます。