Reviewed by: Japanese Online Manual Project <man-jp@jp.FreeBSD.ORG> Submitted by: Kazuo Horikawa <k-horik@yk.rim.or.jp>
301 lines
10 KiB
Groff
301 lines
10 KiB
Groff
.\" 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
|
|
は、エラーメッセージの解析を行ない、
|
|
多くのコンパイラや言語処理系で生成されたエラーメッセージを、
|
|
ソースファイル上で実際にエラーが発生した場所に配置させます。
|
|
このコマンドは、紙の上にエラーを適当に省略してメモするという
|
|
骨のおれる古臭い作業に代わるもので、
|
|
スクリーンエディタのマルチウィンドウ機能の助けなしで
|
|
エラーメッセージとソースコードを一緒に眺められるようにします。
|
|
.Pp
|
|
本コマンドで使用可能なオプションは以下の通りです:
|
|
.Bl -tag -width indent
|
|
.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
|
|
コマンドが ``.c'', ``.y'', ``.foo*'', ``.h'' のいずれかのサフィックス
|
|
で終了するファイル名のファイルを書き換えることを許可していることを意味します。
|
|
.It Fl s
|
|
エラーのカテゴリ別の統計情報を出力します。
|
|
あまり役に立つものではありません。
|
|
.It Fl I
|
|
.Pa ~/.errorrc
|
|
の代わりに使うファイル名を指定します。
|
|
.El
|
|
.Pp
|
|
.Nm
|
|
コマンドは、
|
|
.Ar name
|
|
で指定したファイルから読み込まれた、もしくは標準入力から送られたエラー
|
|
メッセージを見て、
|
|
それぞれのエラーメッセージを吐き出した言語処理系の判定を試みます。
|
|
そして各エラーメッセージが参照しているソースファイルと行番号を決定し、
|
|
無視してよいエラーメッセージかどうかを判定した後で、
|
|
対応するソースプログラムのファイルの当該エラーが参照している行の直前に
|
|
(少し変更した)エラーメッセージをコメントの形で挿入します。
|
|
言語処理系や内容によるカテゴリ分けが出来ないエラーメッセージは、
|
|
いかなるファイルにも挿入されずに、標準出力に送られます。
|
|
.Nm
|
|
は、全ての入力を読み終わった後でしかソースファイルを書き換えません。
|
|
.Pp
|
|
.Nm
|
|
コマンドは、標準入力をパイプを経由して、
|
|
エラーメッセージを吐き出すプログラムにつないで使うことを想定しています。
|
|
言語処理系の中には、エラーメッセージを標準エラーに出すものもあれば、
|
|
標準出力に出すものもあります。
|
|
したがって、両方のエラーの出力先を、ともにパイプによって
|
|
.Nm
|
|
コマンドに送ったほうがよいでしょう。
|
|
例えば、
|
|
.Xr csh 1
|
|
を使用した場合の書式では、
|
|
.Pp
|
|
.Dl make \-s lint \&| error \-q \-v
|
|
.Pp
|
|
のようになります。こうすれば、
|
|
.Xr make 1
|
|
を用いてターゲット lint をメイクしたときに、
|
|
どんなプログラムが実行されたとしても、全てのエラーを解析する
|
|
ことができるでしょう。
|
|
.Pp
|
|
.Nm
|
|
は、
|
|
.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
|
|
コマンドは、言語プロセッサによって生成されるエラーメッセージの標準形式を
|
|
内部に持っているため、その形式の変更には敏感です。
|
|
.Em Pascal
|
|
を除く全ての処理系では、エラーメッセージは1行に制限されています。
|
|
また、エラーメッセージの中には、複数のファイルの複数の行を参照する
|
|
ものがあります。
|
|
.Nm
|
|
コマンドはエラーメッセージを複製し、そのエラーメッセージの参照する全ての行に
|
|
対して情報を付加します。
|
|
.Pp
|
|
.Nm
|
|
コマンドは、
|
|
それぞれのエラーメッセージに対して以下の6つの動作のうち1つを行ないます。
|
|
.Bl -tag -width Em 同期 (synchronize)
|
|
.It Em 同期 (synchronize)
|
|
言語処理系の中には、どのファイルを現在処理しているかについて短い
|
|
メッセージを生成するものがあります。
|
|
.Nm
|
|
コマンドは、この情報を用いて、それぞれのエラーメッセージに
|
|
ファイル名を含めないような言語についてのファイル名を判定します。
|
|
これらの同期メッセージは、
|
|
.Nm
|
|
コマンドによって使われ、出力されることはありません。
|
|
.It Em 捨てる (discard)
|
|
以下の2つの
|
|
.Xr lint 1
|
|
ライブラリ、
|
|
.Pa /usr/libdata/lint/llib-lc
|
|
および
|
|
.Pa /usr/libdata/lint/llib-port
|
|
のうち、どちらか一方を参照する
|
|
.Xr lint 1
|
|
からのエラーメッセージは捨てます。
|
|
これは、誤ってこれらのライブラリを書き換えることがないようにするためです。
|
|
ここでもこれらのエラーメッセージは、
|
|
.Nm
|
|
コマンドによって使われ、出力されることはありません。
|
|
.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
|
|
コマンドによって処理されるか、あるいは標準出力
|
|
に対して送られます。
|
|
.Nm
|
|
コマンドは、エラーメッセージをソースファイル上のエラー
|
|
行の直前の行に挿入します。
|
|
各エラーメッセージは、各言語の 1 行のコメントの形に変形されます。
|
|
そして、エラーの先頭に文字列 ``###'' を、エラーの最後尾に
|
|
文字列 ``%%%'' を付加して、内部的な印をつけます。
|
|
これにより、エディタを用いたエラーのパターン検索が簡単になり、
|
|
挿入されたメッセージを取り除くのも簡単になります。
|
|
加えて、各エラーメッセージは、
|
|
そのエラーメッセージが参照する行のソース上の行番号を含んでいます。
|
|
きちんとした形式に整えられたソースプログラムは、
|
|
挿入されたメッセージを削除しなくとも、
|
|
それらのエラーメッセージが深刻なエラーを起こすことなく再コンパイルが可能です。
|
|
しかし、C や Pascal のように自由形式で記述が可能な言語で、
|
|
なおかつソースプログラムの形式がきちんと整っていない場合には、
|
|
コメントの中にコメントが入ってしまうことが考えられます。
|
|
すると、後のコンパイル時に何らかの不具合が生じることが十分考えられます。
|
|
このことを回避するためには、
|
|
複数の行からなるコメントとプログラムの実体が同じ行にあるようなプログラムでは、
|
|
コメントの前にプログラム言語の文が現れるようにしてください。
|
|
.Pp
|
|
.Nm
|
|
コマンドは、インタラプトシグナルおよびターミネートシグナルを受け取ります。
|
|
シグナルを受けたのがコメントを挿入する段階だった場合には、
|
|
実行中の操作を整然と終了します。
|
|
.Sh 関連ファイル
|
|
.Bl -tag -width ~/.errorrc -compact
|
|
.It Pa ~/.errorrc
|
|
.Xr lint 1
|
|
のエラーメッセージを無視する関数名
|
|
.It Pa /dev/tty
|
|
ユーザの端末
|
|
.El
|
|
.Sh 歴史
|
|
.Nm
|
|
コマンドは、
|
|
.Bx 4.0
|
|
にて初めて実装されました。
|
|
.Sh 作者
|
|
.An Robert Henry
|
|
.Sh バグ
|
|
.Pp
|
|
ユーザに問い合わせを行なうために、端末ファイルを直接オープンします。
|
|
.Pp
|
|
ハードリンクされたソースファイルについては、
|
|
他とリンクされない新しい複製を作ります。
|
|
他のリンクファイルにはその結果が反映されません。
|
|
.Pp
|
|
言語処理系のエラーメッセージの形式が変更された場合、
|
|
.Nm
|
|
コマンドにはそのエラーメッセージが理解できなくなるかもしれません。
|
|
.Pp
|
|
.Nm
|
|
コマンドは
|
|
全く機械的に処理を行うため、
|
|
1つのつまらない文法上のエラーが原因で引き起こされる
|
|
`水門の決壊 (floodgating)'
|
|
により派生した後続のエラーをふるい落としません。
|
|
この種のエラーを無視することは、人間の方がずっと得意です。
|
|
.Pp
|
|
Pascal のエラーメッセージは、本来はエラー行の後ろに来るべきです。
|
|
(
|
|
.Nm
|
|
コマンドは、エラー行の前にエラーメッセージを置きますが。)
|
|
また、エラーのある位置を示す `\\' の配置が
|
|
.Nm
|
|
コマンドによって乱れてしまいます。
|
|
.Pp
|
|
.Nm
|
|
コマンドは、適度に高速に表示される
|
|
.Tn CRT
|
|
を見つつ仕事を行うのに適したように設計されています。
|
|
遅い速度の端末を見ながら作業するのにはいささか不都合です。
|
|
まして、ハードコピー端末で使った人はいません。
|