CTAGS(1) FreeBSD 一般コマンドマニュアル CTAGS(1)
名称
ctags − tags ファイルを作成する |
書式
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 −a −d −f tagsfile −u −v ctags -v files | sort -f > index |
−w
診断用メッセージを表示しないようにします。 −x .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 との互換性のため です。 |
関連項目
規格
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 |