Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ error(1) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

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"

allows は、 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.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026