ERROR(1) — NEWS-OS Programmer’s Manual
名称
error − コンパイラのエラーメッセージを解析し表示する
形式
error [ −n ] [ −s ] [ −q ] [ −v ] [ −t suffixlist ] [ −I ignorefile ] [ name ]
解説
error は、エラーの発生したソースファイルと行に対して、 多数のコンパイラおよび言語プロセッサによって出された 診断エラーメッセージを解析し、オプションによる指定に従ってその結果を 報告します。これを使用すれば、エラーの短縮形をいちいち紙に 書きとめるような面倒な従来の方法を使わなくてもよく、 スクリーンエディタのマルチウィンドウを駆使しなくても、 エラーメッセージとソースコードを同時に見ることができます。
error は、指定されたファイル name または標準入力のいずれかからのエラーメッセージを調べ、 各エラーメッセージを出した言語プロセッサ、エラーメッセージが 指摘したソースファイルと行番号、 エラーメッセージを無視するかどうかを判定し、 ソースファイル内のエラーメッセージの原因となった行の前の行に、 コメントとしてエラーメッセージを(少し修正した形で)挿入します。 言語プロセッサまたは内容ごとの分類ができないエラーメッセージは、 どのファイルにも挿入されずに標準出力へ送られます。 error は入力がすべて読み取られてからでなければ ソースファイルには touch しません。 −q (query) オプションを指定することによって、 ユーザは(ファイルへの touch といったような)危険性や 冗長性のある作業についての確認を求められます。 このオプションが指定されない場合には、 error は前述のようなことは考慮せずに仕事を進めていきます。 −t (touch) オプションとサフィックスのリストが指定された場合には、 error は、そのサフィックスリストにあるサフィックスを持った ファイルだけにタッチするように自己規制します。 (−v を指定することによって)エラーメッセージが挿入されたファイルに対して vi(1) を呼び出させることもできます。これによって、 エラーのあるファイルの名前を覚えておく必要がなくなります。
error は、 その標準入力をパイプを介してエラーメッセージソースへ接続して 実行されるように考えて作られています。いくつかの言語プロセッサは、 エラーメッセージをそれぞれの標準エラーファイルへ収め、 他の言語プロセッサは、エラーメッセージを標準出力に書き込みます。 したがって、これらのエラーソースは両方ともまとめて error へパイプする必要があります。例えば、 csh の構文を使用した
make −s lint |& error −q −v
は、 lint を make するときに make が実行する様々な プログラムによって出力されるエラーメッセージをすべて解析します。
error は、 make、 cc、 cpp、 ccom、 as、 ld、 lint、 pi、 pc、 f77 によって出力されるエラーメッセージを認識します。 error は言語プロセッサによって出力されるエラーメッセージの 標準的なフォーマットを知っているので、 これらのフォーマットにおける変更を感知できます。 Pascal 以外のすべての言語では、 エラーメッセージは 1 行に対するものとなるように制限されています。 エラーメッセージによっては、 複数のファイルの複数の行を指摘するものもあります。そのような場合には、 error は、エラーメッセージをコピーし、それらのすべての箇所に挿入します。
error は、エラーメッセージに次の 6 種類の処理のうちの 1 つを実行します。
synchronize
いくつかの言語プロセッサは、 どのファイルを処理しているのかを示す短いメッセージも出力します。 error は、各エラーメッセージにファイル名を含まない言語に対しては、 これらを使用してファイル名を特定します。 これらの同期メッセージは、どこへも出力されません。
discard
2 つのライブラリ /usr/lib/llib-lc か /usr/lib/llib-port に対する lint のエラーメッセージは破棄され、 これらのライブラリへのタッチが防止されます。 これらのエラーメッセージは、どこへも出力されません。
nullify
(興味のない診断を生成するために認識される) 特定の関数に対する lint のエラーメッセージは無視されます。 無視されたエラーメッセージは、ソースファイルには挿入されずに、 標準出力へ書き込まれます。 無視する関数の名前は、ユーザのホームディレクトリにある .errorrc という名前のファイルまたは −I オプションで指定された名前の ファイルから取り出されます。そのファイルが存在しない場合には、 エラーメッセージはどれも無視はされません。ファイルが存在する場合には、 1 行につき 1 つの関数名がなければなりません。
not file specific
認識できないエラーメッセージはまとめられて、 ファイルがタッチされる前に標準出力へ書き込まれます。 これらのメッセージはソースファイルには挿入されません。
file specific
ファイル名は指定しているが、行を指定していないエラーメッセージは、 そのファイルがタッチされるときに標準出力へ書き込まれます。
true errors
認識できるエラーメッセージは、 指定されたファイルへの挿入の候補になります。
上記の true errors のメッセージだけが、指定されたファイルへ挿入される候補になります。 他のエラーメッセージは error によって廃棄されるか、または標準出力へ書き込まれます。 error は、 ファイル内で言語プロセッサがエラーを指摘した行の直前にエラーメッセージを 挿入します。各エラーメッセージは、その言語の 1 行のコメントに変えられ、 エラーの先頭には文字列 ### が、そしてエラーの終りには %%% が内部的に付けられます。これによって、 エディタを使用したエラーのパターン走査を容易に行うことができ、 また、メッセージの削除も容易に行うことができます。さらに、 各エラーメッセージには、そのメッセージが指定している ソース行番号が含まれています。 適切にフォーマッティングされたソースプログラムは、 エラーメッセージがその中にあっても再コンパイルすることができ、 エラーメッセージ自体が新たなエラーを引き起こすことはありません。 C や Pascal のような自由形式言語のソースプログラムのフォーマットが適切な ものになっていない場合には、コメントを別のコメントに挿入することは可能 ですが、将来行われるコンパイルで大混乱を引き起こしてしまいます。 これを防止するためには、コメントとソースが同じ行にあるプログラムは、 その言語の文がコメントの前にくるようにフォーマッティングする 必要があります。
error で使用できるオプションは次のとおりです。
−n どのファイルも touch されません。 エラーメッセージは、すべて標準出力へ送られます。
−q ファイルに touch してよいかどうかを尋ねられます。 y または n で答えて継続します。 −q オプションが指定されない場合、 (破棄されたエラーメッセージが指定しているものを除き) 指定されているすべてのファイルが touch されることを意味します。
−v すべてのファイルが touch されたあとに、 touch されたすべてのファイルを編集するように ビジュアルエディタ vi をセットアップして呼出し、 最初に touch されたファイルの最初のエラーに位置付けます。 vi が見つからない場合には、標準的な場所から ex または ed を呼び出そうとします。
−t サフィックスリストとして次のように引数を指定します。サフィックスが サフィックスリストにないファイルは touch されません。サフィックスリストは、ドットで区切られ、 ∗ ワイルドカードを使用することができます。 例えば、サフィックスリスト
".c.y.foo∗.h"
は、 error が .c、.y、.foo∗、 .h で終わっているファイルに touch することを許します。
−s エラーの分類に関する統計を表示します。あまり使い道はありません。
error は、割込みおよび終了シグナルをキャッチし、挿入段階にある場合には、 現在行っていることを元に戻して終了させます。
著者
Robert Henry
関連ファイル
~/.errorrclint のエラーメッセージで無視する関数名
/dev/ttyユーザのテレタイプ
バグ
テレタイプを直接オープンしてユーザの問合わせを実行します。
リンクのあるソースファイルは、リンクを 1 つだけ持ったファイルの 新しいコピーを作ります。
言語プロセッサのエラーメッセージフォーマットを変更すると、 error がエラーメッセージを認識できないこともあります。
error は、機械的に処理するため、1 つのささいな構文的なエラーによって 引き起こされる連続的なエラーを取り除くことはできません。 これらの関連エラーの破棄では、人間のほうがはるかに優れています。
Pascal のエラーメッセージは、影響を及ぼした行のあとに属します (error はこれらの行を前に置きます)。エラーの位置をマークしている | の連なりは、 error によって乱されます。
error は、CRT でかなり高い速度で働くように設計されています。 低速の端末装置には不向きですし、ハードコピー端末装置では使用できません。
NEWS-OSRelease 4.2.1R