error(1)error(1)Nameerror - analyze and disperse compiler error messages
Syntaxerror [-n] [-s] [-q] [-v] [-t suffixlist] [-I ignorefile] [name]
Description
The command analyzes and optionally disperses the diagnostic error mes‐
sages produced by a number of compilers and language processors to the
source file and line where the errors occurred. It permits error mes‐
sages and source code to be viewed simultaneously without using multi‐
ple windows in a screen editor.
The command looks at the error messages, either from the specified file
name or from the standard input. It attempts to determine the follow‐
ing: which language processor produced each error message, to which
source file and line number the error message refers, and if the error
message is to be ignored or not. It also inserts the error message
into the source file as a comment on the line preceding the one where
the error occurred.
Error messages that cannot be categorized by language processor or con‐
tent are not inserted into any file, but are sent to the standard out‐
put. The command touches source files only after all input has been
read. By specifying the -q query option, the user is asked to confirm
any potentially dangerous (such as touching a file) or verbose action.
If the -t touch option and associated suffix list is given, restricts
itself to touching only those files with suffixes in the suffix list.
Error also can be asked (by specifying -v) to invoke on the files in
which error messages were inserted; this prevents the need to remember
the names of the files with errors.
The command is intended to be run with its standard input connected via
a pipe to the error message source. Some language processors put error
messages on their standard error file; others put their messages on the
standard output. Hence, both error sources should be piped together
into For example, when using the csh syntax,
make -s lint |& error-q -v
analyzes all the error messages produced by whatever programs runs when
making lint.
The command knows about the error messages produced by the following:
and The command knows a standard format for error messages produced by
the language processors, so it is sensitive to changes in these for‐
mats. For all languages except Pascal, error messages are restricted
to be on one line. Some error messages refer to more than one line in
more than one file. The command duplicates the error message and
inserts it at all of the places referenced.
The command does one of six things with error messages.
synchronize Some language processors produce short errors
describing which file it is processing. The com‐
mand uses these to determine the file name for lan‐
guages that don't include the file name in each
error message. These synchronization messages are
consumed entirely by
discard Error messages from that refer to one of the two
libraries, /usr/lib/llib-lc and /usr/lib/llib-port
are discarded, to prevent accidently touching these
libraries. Again, these error messages are con‐
sumed entirely by
nullify Error messages from can be nullified if they refer
to a specific function, which is known to generate
diagnostics which are not interesting. Nullified
error messages are not inserted into the source
file, but are written to the standard output. The
names of functions to ignore are taken from either
the file named in the users's home directory, or
from the file named by the -I option. If the file
does not exist, no error messages are nullified.
If the file does exist, there must be one function
name per line.
not file specific Error messages that can't be discerned are grouped
together, and written to the standard output before
any files are touched. They will not be inserted
into any source file.
file specific Error message that refer to a specific file, but to
no specific line, are written to the standard out‐
put when that file is touched.
true errors Error messages that can be intuited are candidates
for insertion into the file to which they refer.
Only true error messages are candidates for inserting into the file
they refer to. Other error messages are consumed entirely by or are
written to the standard output. The command inserts the error messages
into the source file on the line preceding the line the language pro‐
cessor found in error. Each error message is turned into a one line
comment for the language, and is internally flagged with the string
``###'' at the beginning of the error, and ``%%%'' at the end of the
error. This makes pattern searching for errors easier with an editor,
and allows the messages to be easily removed.
In addition, each error message contains the source line number for the
line to which the message refers. A reasonably formatted source pro‐
gram can be recompiled with the error messages still in it, without
having the error messages themselves cause future errors. For poorly
formatted source programs in free format languages, such as C or Pas‐
cal, it is possible to insert a comment into another comment, which can
wreak havoc with a future compilation. To avoid this, programs with
comments and source on the same line should be formatted so that lan‐
guage statements appear before comments.
The command catches interrupt and terminate signals, and if in the
insertion phase, terminates what it is doing.
Options
Options available with are the following:
-I ignorefile Ignore the functions listed in the specified file
(next argument).
-n Does not touch files and sends error messages to
the standard output.
-q Prompts before touching the source file. A ``y''
or ``n'' to the question is necessary to continue.
Absence of the -q option implies that all refer‐
enced files (except those referring to discarded
error messages) are to be touched.
-S Shows error in unsorted order from the error file.
-s Displays statistics for each error type.
-T Terse output.
-t suffixlist Does not touch those files that match the specified
suffix. The suffix list is dot separated, and
``*'' wildcards work. Thus the suffix list:
".c.y.foo*.h"
allows error to touch files ending with ``.c'',
``.y'', ``.foo*'' and ``.h''.
-v Invokes the editor on each file that had been
touched.
Restrictions
Opens the teletype directly to do user querying.
Source files with links make a new copy of the file with only one link
to it.
Changing a language processor's format of error messages may cause to
not understand the error message.
The command, since it is purely mechanical, does not filter out subse‐
quent errors caused by `floodgating' initiated by one syntactically
trivial error.
Pascal error messages belong after the lines affected (error puts them
before). The alignment of the `|' marking the point of error is also
disturbed by
The command was designed for work on CRT's at reasonably high speed.
It does not work as well on slow speed terminals, and has never been
used on hard-copy terminals.
Files
function names to ignore for lint error messages
user's teletype
error(1)