aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/error.1
blob: 281e38dc6276467d7d5c5dded05cc82ae3aa34dd (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
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
.\" Copyright (c) 1980, 1990 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.
.\"
.\"	@(#)error.1	8.1 (Berkeley) 6/6/93
.\" jpman %Id: error.1,v 1.2 1997/03/29 02:29:02 horikawa Stab %
.\"
.Dd June 6, 1993
.Dt ERROR 1
.Os BSD 4
.Sh 名称
.Nm error
.Nd コンパイラのエラーメッセージを解析する
.Sh 書式
.Nm error
.Op Fl n
.Op Fl s
.Op Fl q
.Op Fl v
.Op Fl t Ar suffixlist
.Op Fl I Ar ignorefile
.Op name
.Sh 解説
.Nm error
は、エラーメッセージの解析を行ない、
多くのコンパイラや言語処理系で生成されたエラーメッセージを、
ソースファイル上で実際にエラーが発生した場所に配置させます。
このコマンドは、紙の上にエラーを適当に省略してメモするという
骨のおれる古臭い作業に代わるもので、
スクリーンエディタのマルチウィンドウ機能の助けなしで
エラーメッセージとソースコードを一緒に眺められるようにします。
.Pp
本コマンドで使用可能なオプションは以下の通りです。
.Bl -tag -width Ds
.It Fl n
一切のファイルの書き換え (touch) を
.Em しません。
すべてのエラーメッセージは、
標準出力に送られます。
.It Fl q
ユーザにファイルの書き換えをするかどうかを尋ねます。質問に対して ``y'' か
``n'' を答えないと処理を継続できません。
.Fl q
オプションを指定しない場合には、参照された全てのファイル
(捨ててしまったエラーメッセージだけが参照していたものを除く)
は書き換えの対象になります。
.It Fl v
全てのファイルの書き換えが終った後で、エディタ
.Xr \&vi 1
を起動し、書き換えたすべてのファイルの編集を準備します。そして、
書き換えた最初のファイルの最初のエラーのところに位置あわせをします。
.Xr \&vi 1
が見つからない場合には、かわりに
.Xr \&ex 1
もしくは
.Xr \&ed 1
を通常の場所から起動します。
.It Fl t
スイッチに続いて指定された引数をサフィックスリストとして取得します。
サフィックスリストにないサフィックスを持つファイルは、本コマンドに
よる書き換えの対象となりません。
サフィクスリストにはサフィクスをドットで区切って並べて下さい。
また、``*'' によるワイルドカード指定も有効です。
例えば、以下に示すようなサフィックスリスト
.Pp
.Dl ".c.y.foo*.h"
.Pp
は、
.Nm error
コマンドが ``.c'', ``.y'', ``.foo*'', ``.h'' のいずれかのサフィックス
で終了するファイル名のファイルを書き換えることを許可していることを意味します。
.It Fl s
エラーのカテゴリ別の統計情報を出力します。
あまり役に立つものではありません。
.It Fl I
.Pa ~/.errorrc
の代わりに使うファイル名を指定します。
.El
.Pp
.Nm error
コマンドは、
.Ar name
で指定したファイルから読み込まれた、もしくは標準入力から送られたエラー
メッセージを見て、
それぞれのエラーメッセージを吐き出した言語処理系の判定を試みます。
そして各エラーメッセージが参照しているソースファイルと行番号を決定し、
無視してよいエラーメッセージかどうかを判定した後で、
対応するソースプログラムのファイルの当該エラーが参照している行の直前に
(少し変更した)エラーメッセージをコメントの形で挿入します。
言語処理系や内容によるカテゴリ分けが出来ないエラーメッセージは、
いかなるファイルにも挿入されずに、標準出力に送られます。
.Nm error
は、全ての入力を読み終わった後でしかソースファイルを書き換えません。
.Pp
.Nm error
コマンドは、標準入力をパイプを経由して、
エラーメッセージを吐き出すプログラムにつないで使うことを想定しています。
言語処理系の中には、エラーメッセージを標準エラーに出すものもあれば、
標準出力に出すものもあります。
したがって、両方のエラーの出力先を、ともにパイプによって
.Nm error
コマンドに送ったほうがよいでしょう。
例えば、
.Xr csh 1
を使用した場合の書式では、
.Pp
.Dl make \-s lint \&| error \-q \-v
.Pp
のようになります。こうすれば、
.Xr make 1
を用いてターゲット lint をメイクしたときに、
どんなプログラムが実行されたとしても、全てのエラーを解析する
ことができるでしょう。
.Pp
.Nm error
は、
.Xr make 1 ,
.Xr \&cc 1 ,
.Xr cpp 1 ,
.Xr ccom 1 ,
.Xr \&as 1 ,
.Xr \&ld 1 ,
.Xr lint 1 ,
.Xr \&pi 1 ,
.Xr \&pc 1 ,
.Xr f77 1 ,
.Em DEC Western Research Modula\-2
の各処理系で生成されたエラーメッセージを解析することが出来ます。
.Nm error
コマンドは、言語プロセッサによって生成されるエラーメッセージの標準形式を
内部に持っているため、その形式の変更には敏感です。
.Em Pascal
を除く全ての処理系では、エラーメッセージは1行に制限されています。
また、エラーメッセージの中には、複数のファイルの複数の行を参照する
ものがあります。
.Nm error
コマンドはエラーメッセージを複製し、そのエラーメッセージの参照する全ての行に
対して情報を付加します。
.Pp
.Nm error
コマンドは、
それぞれのエラーメッセージに対して以下の6つの動作のうち1つを行ないます。
.Bl -tag -width Em 同期 (synchronize) 
.It Em 同期 (synchronize)
言語処理系の中には、どのファイルを現在処理しているかについて短い
メッセージを生成するものがあります。
.Nm error
コマンドは、この情報を用いて、それぞれのエラーメッセージに
ファイル名を含めないような言語についてのファイル名を判定します。
これらの同期メッセージは、
.Nm error
コマンドによって使われ、出力されることはありません。
.It Em 捨てる (discard)
以下の2つの
.Xr lint 1
ライブラリ、
.Pa /usr/libdata/lint/llib-lc
および
.Pa /usr/libdata/lint/llib-port
のうち、どちらか一方を参照する
.Xr lint 1
からのエラーメッセージは捨てます。
これは、誤ってこれらのライブラリを書き換えることがないようにするためです。
ここでもこれらのエラーメッセージは、
.Nm error
コマンドによって使われ、出力されることはありません。
.It Em 無効化 (nullify)
特定の関数に対する
.Xr lint 1
からのエラーメッセージのうち、すでに出ることが分かっていて必要のない情報は、
無効化することができます。
無効化されたエラーメッセージは、ソースファイルには挿入されず、
標準出力へ送られます。
無視される関数名は、ユーザのホームディレクトリ配下の
.Pa .errorrc
ファイルもしくは
.Fl I
オプションによって名前を指定したファイルのどちらかによって与えます。
このファイルが存在しない場合には、どのエラーメッセージも無効化されません。
ファイルが存在する場合には、関数名は1行に1つずつ記述しなければなりません。
.It Em ファイルと関連しない (not file specific)
読み方がわからないエラーメッセージはひとまとめにされ、
ファイルを書き換える
前に標準出力に送られます。
これらのエラーメッセージは、どのソースファイルにも挿入されません。
.It Em ファイルと関連 (file specific)
特定のファイルを参照するが、
特定の行を参照しないエラーメッセージについては、
そのファイルの書き換えを行なう時に標準出力に送られます。
.It Em 確かなエラー (true errors)
その他の、読み方がわかるエラーメッセージは、
そのエラーメッセージの参照するファイル
への挿入の候補となります。
.El
.Pp
確かなエラーメッセージのみファイル挿入の候補とされます。
他のエラーメッセージは、全て
.Nm error
コマンドによって処理されるか、あるいは標準出力
に対して送られます。
.Nm error
コマンドは、エラーメッセージをソースファイル上のエラー
行の直前の行に挿入します。
各エラーメッセージは、各言語の 1 行のコメントの形に変形されます。
そして、エラーの先頭に文字列 ``###'' を、エラーの最後尾に
文字列 ``%%%'' を付加して、内部的な印をつけます。
これにより、エディタを用いたエラーのパターン検索が簡単になり、
挿入されたメッセージを取り除くのも簡単になります。
加えて、各エラーメッセージは、
そのエラーメッセージが参照する行のソース上の行番号を含んでいます。
きちんとした形式に整えられたソースプログラムは、
挿入されたメッセージを削除しなくとも、
それらのエラーメッセージが深刻なエラーを起こすことなく再コンパイルが可能です。
しかし、C や Pascal のように自由形式で記述が可能な言語で、
なおかつソースプログラムの形式がきちんと整っていない場合には、
コメントの中にコメントが入ってしまうことが考えられます。
すると、後のコンパイル時に何らかの不具合が生じることが十分考えられます。
このことを回避するためには、
複数の行からなるコメントとプログラムの実体が同じ行にあるようなプログラムでは、
コメントの前にプログラム言語の文が現れるようにしてください。
.Pp
.Nm error
コマンドは、インタラプトシグナルおよびターミネートシグナルを受け取ります。
シグナルを受けたのがコメントを挿入する段階だった場合には、
実行中の操作を整然と終了します。
.Sh 関連ファイル
.Bl -tag -width ~/.errorrc -compact
.It Pa ~/.errorrc
.Xr lint 1
のエラーメッセージを無視する関数名
.It Pa /dev/tty
ユーザの端末
.El
.Sh 歴史
.Nm error
コマンドは、
.Bx 4.0
にて初めて実装されました。
.Sh 作者
Robert Henry
.Sh バグ
.Pp
ユーザに問い合わせを行なうために、端末ファイルを直接オープンします。
.Pp
ハードリンクされたソースファイルについては、
他とリンクされない新しい複製を作ります。
他のリンクファイルにはその結果が反映されません。
.Pp
言語処理系のエラーメッセージの形式が変更された場合、
.Nm error
コマンドにはそのエラーメッセージが理解できなくなるかもしれません。
.Pp
.Nm error
コマンドは
全く機械的に処理を行うため、
1つのつまらない文法上のエラーが原因で引き起こされる
`水門の決壊 (floodgating)'
により派生した後続のエラーをふるい落としません。
この種のエラーを無視することは、人間の方がずっと得意です。
.Pp
Pascal のエラーメッセージは、本来はエラー行の後ろに来るべきです。
(
.Nm error
コマンドは、エラー行の前にエラーメッセージを置きますが。)
また、エラーのある位置を示す `\\' の配置が
.Nm error
コマンドによって乱れてしまいます。
.Pp
.Nm error
コマンドは、適度に高速に表示される
.Tn CRT
を見つつ仕事を行うのに適したように設計されています。
遅い速度の端末を見ながら作業するのにはいささか不都合です。
まして、ハードコピー端末で使った人はいません。