スポンサーリンク

CTAGS(1) FreeBSD 一般コマンドマニュアル CTAGS(1)

名称

ctagstags ファイルを作成する

書式

ctags [−BFTaduwvx] [−f tagsfile] file ...

解説

ctags は、指定された C, Pascal, Fortran, yacc(1), lex(1), Lisp のソースか ら、 ex(1) コマンド用の tags ファイルを作成します。タグファイルは、指定さ れたオブジェクトが一群のファイル中のどの場所にあるかを示すものです。タグ ファイルの各行はオブジェクトの名前、定義されているファイル、オブジェクト の定義を見つけるための検索パターンを含み、各々は空白で区切られています。 この tags ファイルを用いることにより、 ex(1) でこれらのオブジェクトが定義 されている場所をすばやく見つけることができます。 ctags に与えられるオプ ションによりますが、オブジェクトは subroutine, typedef, define, struct, enum, union から構成されます。

次のオプションを使用可能です:

       −B

後方検索パターン (?...?) を用います。

−F
前方検索パターン (/.../) を用います(デフォルト)。

−T
typedefs, structs, unions, enums に関してタグを作成しません。

−a
既存の tags ファイルに追加します。

−d
引数を持たない #define に関してもタグを作成します。引数を持つ #define は自動的にタグが作成されます。

−f tagsfile
tagsfile
で指定されたファイル名でタグファイルを生成します。デフォ ルトでは tags というファイル名でタグファイルを生成します。

−u
tags
ファイル内の指定されたファイルに関する情報を更新します。すな わち、関係するファイルへのすべての参照が削除され、新しいタグ情報 がファイルに追加されます。 (注意: このオプションはあまりスピード のでないような実装しかおこなわれていません。単に tags ファイルを 再構築した方が早く終了するでしょう。)

−v
vgrind(1) 形式のファイル一覧が標準出力に出力されます。この一覧は オブジェクト名、ファイル名、1 ページあたり 64 行とした場合のペー ジ番号から構成されます。出力は辞書式の順番でソートされているの で、この後に sort(1) を通した方がよいでしょう。次のように使いま す。

ctags -v files | sort -f > index
vgrind -x index

       −w

診断用メッセージを表示しないようにします。

−x
ctags
はオブジェクト名、行番号、ファイル名、その行の内容からなる 一覧を作成し、それを標準出力に出力します。これはオフラインでも読 みやすいように印刷できる簡単な関数一覧として利用できます。

.c.h で終わる名前のファイルは、 C 言語のソースファイルとみなされ、 C の形式の関数・マクロ定義が検索されます。 .y で終わる名前のファイルは、 yacc(1) のソースファイルとみなされます。 .l で終わる名前のファイルは、最 初の空白でない文字が ‘;’, ‘(’, ‘[’ のいずれかであれば Lisp のファイルであ るとみなされ、そうでなければ lex(1) のファイルとみなされます。その他の ファイルは、まず Pascal か Fortran の定義が含まれるかどうかがチェックさ れ、含まれない場合には C 形式の定義が検索されます。

C 言語の場合、 ‘‘main’’ は特別に扱われ、元のソースファイルのパス名部分と 末尾の .c の部分を取り除いたファイル名に対し、その先頭に ‘M’ を付加したも のをオブジェクト名とします。これにより、同じディレクトリに複数のプログラ ムがある場合でも ctags を実用的に使うことができます。

yacc(1)lex(1) のファイルには特殊なタグがあります。 ‘‘yyparse’’ は yacc(1) ファイルの第二セクションの始まりを示し、 ‘‘yylex’’ は lex(1) ファ イルの第二セクションの始まりを示します。

関連ファイル

       tags

デフォルトで出力されるタグファイル

診断

ctags ユーティリティは、エラーが発生すると 1 を返し、それ以外では 0 を返 します。同じ名前のオブジェクトが複数出てきてもエラーとはみなされません。

互換性

−t オプションは何もしません。 typedefs, enums, structs, unions に関してデ フォルトでタグを作成しなかった、以前のバージョンの ctags との互換性のため です。

関連項目

ex(1), vi(1)

規格

ctags ユーティリティは IEEE Std 1003.1-2001 (‘‘POSIX.1’’) に準拠していま す。

歴史

ctags ユーティリティは 3.0BSD から登場しました。

バグ

Fortran と Pascal 用の関数(function)、サブルーチン(subroutine)、手続 き(procedure) の認識にはとても単純な方法を用いています。ブロック構造が解 釈できないので、異なるブロックに同じ名前の Pascal 手続きが存在するとうま く動作しません。 ctags ユーティリティは Pascal の型(type)も理解しません。

C か Pascal か Fortran かを判断する方法はとりあえず動いている、という程度 のものです。

ctags ユーティリティはきちんと整形された入力に頼っています。また、ソース ファイルに文法的な間違いがあると簡単に混乱してしまいます。文法的に間違っ ていなくても混乱する場合があります。例えば、 #ifdef を理解しないので(バグ ではなく仕様です)、 #ifdef 内に括弧のつりあっていないコードがあると混乱し てしまいます。同様に、定義が複数行にわたっている場合、オブジェクトの先頭 行ではなく最終行が検索パターンにマッチします。複数行にわたる typedef に関 しても同様です。

FreeBSD 10.0 June 6, 1993 FreeBSD 10.0

スポンサーリンク