aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/ctags.1
blob: 8bfe1604352de16ea4962c67a69a29d764511200 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
.\" Copyright (c) 1987, 1990, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)ctags.1	8.1 (Berkeley) 6/6/93
.\" jpman %Id: ctags.1,v 1.4 1997/08/31 14:11:31 horikawa Stab %
.\"
.\" ctags.1 修正時には gctags.1 も同様に修正して下さい。
.\" Aug 31 1997 <horikawa@jp.freebsd.org>
.Dd June 6, 1993
.Dt CTAGS 1
.Os BSD 4
.Sh 名称
.Nm ctags
.Nd タグファイルを作成する
.Sh 書式
.Nm ctags
.Op Fl BFadtuwvx
.Op Fl f Ar tagsfile
.Ar name ...
.Sh 解説
.Nm ctags
は、指定された C, Pascal, Fortran,
.Tn YACC ,
lex, lisp のソースから、 
.Xr ex 1
コマンド用のタグファイルを作成します。
タグファイルは、指定されたオブジェクトが一群のファイル中の
どの場所にあるかを示すものです。
タグファイルの各行はオブジェクトの名前、定義されているファイル、
オブジェクトの定義を見つけるための検索パターンを含み、
各々は空白で区切られています。
この
.Ar tags
ファイルを用いることにより、
.Xr ex 1
でこれらのオブジェクトが定義されている場所をすばやく見つけることが
できます。
.Nm
に与えられるオプションによりますが、オブジェクトは
subroutine 、 typedef 、 define 、 struct 、 enum 、 union から
構成されます。
.Bl -tag -width Ds
.It Fl B
後方検索パターン
.Pq Li ?...?
を用います。
.It Fl F
前方検索パターン
.Pq Li /.../
を用います(デフォルト)。
.It Fl a
既存の
.Ar tags
ファイルに追加します。
.It Fl d
引数を持たない
.Li #define
に関してもタグを作成します。引数を持つ
.Li #define
は自動的にタグが作成されます。
.It Fl f Ar tagsfile
.Ar tagsfile
で指定されたファイル名でタグファイルを生成します。
デフォルトでは
.Ar tags
というファイル名でタグファイルを生成します。
.It Fl t
typedef, struct, union, enum 宣言のタグを生成します。
.It Fl u
.Ar tags
ファイル内の指定されたファイルに関する情報を更新します。
すなわち、関係するファイルへのすべての参照が削除され、新しいタグ情報が
ファイルに追加されます。
(注意: このオプションはあまりスピードのでないような実装しか
おこなわれていません。単に
.Ar tags
ファイルを再構築した方が早く終了するでしょう。)
.It Fl v
.Xr vgrind 1
形式のファイル一覧が標準出力に出力されます。
この一覧はオブジェクト名、ファイル名、1 ページあたり 64 行とした場合の
ページ番号から構成されます。
出力は辞書式の順番でソートされているので、この後に
.Xr sort 1
を通した方がよいでしょう。次のように使います。
.Bd -literal -offset indent
ctags \-v files \&| sort \-f > index
vgrind \-x index
.Ed
.It Fl w
診断用メッセージを表示しないようにします。
.It Fl x
.Nm
はオブジェクト名、行番号、ファイル名、その行の内容からなる一覧を作成し、
それを標準出力に出力します。
これはオフラインでも読みやすいように印刷できる簡単な関数一覧として
利用できます。
.El
.Pp
.Nm \&.c
や
.Nm \&.h
で終わる名前のファイルは、 C 言語のソースファイルとみなされ、
C の形式の関数・マクロ定義が検索されます。
.Nm \&.y
で終わる名前のファイルは、
.Tn YACC
のソースファイルとみなされます。
.Nm \&.l
で終わる名前のファイルは、最初の空白でない文字が `;' か `(' か `[' で
あれば lisp のファイルであるとみなされ、そうでなければ lex のファイルと
みなされます。
その他のファイルは、まず Pascal か Fortran の定義が含まれるか
どうかがチェックされ、含まれない場合には C 形式の定義が検索されます。
.Pp
C 言語の場合、
.Li main
は特別に扱われ、元のソースファイルのパス名部分と末尾の
.Nm \&.c
の部分を取り除いたファイル名に対し、その先頭に
.Ar M
を付加したものをオブジェクト名とします。
これにより、同じディレクトリに複数のプログラムがある場合でも
.Nm
を実用的に使うことができます。
.Pp
yacc と lex のファイルには特殊なタグがあります。
.Ar yyparse
は yacc ファイルの第二セクションの始まりを示し、
.Ar yylex
は lex ファイルの第二セクションの始まりを示します。
.Sh 関連ファイル
.Bl -tag -width tags -compact
.It Pa tags
デフォルトで出力されるタグファイル
.El
.Sh 診断
.Nm
はエラーが発生すると 1 を返し、それ以外では 0 を返します。
同じ名前のオブジェクトが複数出てきてもエラーとはみなされません。
.Sh 関連項目
.Xr ex 1 ,
.Xr vi 1
.Sh バグ
.Tn FORTRAN
と Pascal 用の
.Nm 関数(function)
、
.Nm サブルーチン(subroutine)
、
.Nm 手続き(procedure)
の認識にはとても単純な方法を用いています。
ブロック構造が解釈できないので、異なるブロックに同じ名前の Pascal 手続きが
存在するとうまく動作しません。
.Nm
は Pascal の型(type)も理解しません。
.Pp
C か Pascal か
.Tn FORTRAN
かを判断する方法はとりあえず動いている、という程度のものです。
.Pp
.Nm
はきちんと整形された入力に頼っています。
また、ソースファイルに文法的な間違いがあると
簡単に混乱してしまいます。
文法的に間違っていなくても混乱する場合があります。
例えば、
.Li #ifdef
を理解しないので(バグではなく仕様です)、
.Li #ifdef
内に括弧のつりあっていないコードがあると混乱してしまいます。
同様に、定義が複数行にわたっている場合、オブジェクトの先頭行ではなく
最終行が検索パターンにマッチします。
複数行にわたる
.Li typedef
に関しても同様です。
.Sh 歴史
.Nm
コマンドは
.Bx 3.0
から登場しました。