|
|
1.1 ! root 1: .\" Copyright (c) 1980 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)error.1 6.2 (Berkeley) 5/5/86 ! 6: .\" ! 7: .TH ERROR 1 "May 5, 1986" ! 8: .UC 4 ! 9: .SH NAME ! 10: error \- analyze and disperse compiler error messages ! 11: .SH SYNOPSIS ! 12: .B error ! 13: [ ! 14: .B \-n ! 15: ] [ ! 16: .B \-s ! 17: ] [ ! 18: .B \-q ! 19: ] [ ! 20: .B \-v ! 21: ] [ ! 22: .B \-t ! 23: suffixlist ! 24: ] [ ! 25: .B \-I ! 26: ignorefile ! 27: ] [ name ] ! 28: .SH DESCRIPTION ! 29: .I Error ! 30: analyzes and optionally disperses the diagnostic error messages ! 31: produced by a number of compilers and language processors to the source ! 32: file and line where the errors occurred. It can replace the painful, ! 33: traditional methods of scribbling abbreviations of errors on paper, and ! 34: permits error messages and source code to be viewed simultaneously ! 35: without machinations of multiple windows in a screen editor. ! 36: .PP ! 37: .I Error ! 38: looks at the error messages, ! 39: either from the specified file \fIname\fR ! 40: or from the standard input, ! 41: and attempts to determine which ! 42: language processor produced each error message, ! 43: determines the source file and line number to which the error message refers, ! 44: determines if the error message is to be ignored or not, ! 45: and inserts the (possibly slightly modified) error message into ! 46: the source file as a comment on the line preceding to which the ! 47: line the error message refers. ! 48: Error messages which can't be categorized by language processor ! 49: or content are not inserted into any file, ! 50: but are sent to the standard output. ! 51: .I Error ! 52: touches source files only after all input has been read. ! 53: By specifying the ! 54: .B \-q ! 55: query option, ! 56: the user is asked to confirm any potentially ! 57: dangerous (such as touching a file) or verbose action. ! 58: Otherwise ! 59: .I error ! 60: proceeds on its merry business. ! 61: If the ! 62: .B \-t ! 63: touch option and associated suffix list is given, ! 64: .I error ! 65: will restrict itself to touch only those files with suffices ! 66: in the suffix list. ! 67: Error also can be asked (by specifying ! 68: .B \-v) ! 69: to invoke ! 70: .IR vi (1) ! 71: on the files in which error messages were inserted; this obviates ! 72: the need to remember the names of the files with errors. ! 73: .PP ! 74: .I Error ! 75: is intended to be run ! 76: with its standard input ! 77: connected via a pipe to the error message source. ! 78: Some language processors put error messages on their standard error file; ! 79: others put their messages on the standard output. ! 80: Hence, both error sources should be piped together into ! 81: .I error. ! 82: For example, when using the \fIcsh\fP syntax, ! 83: .IP ! 84: make \-s lint |\|& error \-q \-v ! 85: .LP ! 86: will analyze all the error messages produced ! 87: by whatever programs ! 88: .I make ! 89: runs when making lint. ! 90: .PP ! 91: .I Error ! 92: knows about the error messages produced by: ! 93: .I make, ! 94: .I cc, ! 95: .I cpp, ! 96: .I ccom, ! 97: .I as, ! 98: .I ld, ! 99: .I lint, ! 100: .I pi, ! 101: .I pc, ! 102: .I f77, ! 103: and ! 104: .I DEC Western Research Modula-2. ! 105: .I Error ! 106: knows a standard format for error messages produced by ! 107: the language processors, ! 108: so is sensitive to changes in these formats. ! 109: For all languages except ! 110: .I Pascal, ! 111: error messages are restricted to be on one line. ! 112: Some error messages refer to more than one line in more than ! 113: one files; ! 114: .I error ! 115: will duplicate the error message and insert it at ! 116: all of the places referenced. ! 117: .PP ! 118: .I Error ! 119: will do one of six things with error messages. ! 120: .TP 10 ! 121: .I synchronize ! 122: Some language processors produce short errors describing ! 123: which file it is processing. ! 124: .I Error ! 125: uses these to determine the file name for languages that ! 126: don't include the file name in each error message. ! 127: These synchronization messages are consumed entirely by ! 128: .I error. ! 129: .TP 10 ! 130: .I discard ! 131: Error messages from ! 132: .I lint ! 133: that refer to one of the two ! 134: .I lint ! 135: libraries, ! 136: .I /usr/lib/llib-lc ! 137: and ! 138: .I /usr/lib/llib-port ! 139: are discarded, ! 140: to prevent accidently touching these libraries. ! 141: Again, these error messages are consumed entirely by ! 142: .I error. ! 143: .TP 10 ! 144: .I nullify ! 145: Error messages from ! 146: .I lint ! 147: can be nullified if they refer to a specific function, ! 148: which is known to generate diagnostics which are not interesting. ! 149: Nullified error messages are not inserted into the source file, ! 150: but are written to the standard output. ! 151: The names of functions to ignore are taken from ! 152: either the file named ! 153: .I .errorrc ! 154: in the users's home directory, ! 155: or from the file named by the ! 156: .B \-I ! 157: option. ! 158: If the file does not exist, ! 159: no error messages are nullified. ! 160: If the file does exist, there must be one function ! 161: name per line. ! 162: .TP 10 ! 163: .I not file specific ! 164: Error messages that can't be intuited are grouped together, ! 165: and written to the standard output before any files are touched. ! 166: They will not be inserted into any source file. ! 167: .TP 10 ! 168: .I file specific ! 169: Error message that refer to a specific file, ! 170: but to no specific line, ! 171: are written to the standard output when ! 172: that file is touched. ! 173: .TP 10 ! 174: .I true errors ! 175: Error messages that can be intuited are candidates for ! 176: insertion into the file to which they refer. ! 177: .PP ! 178: Only true error messages are candidates for inserting into ! 179: the file they refer to. ! 180: Other error messages are consumed entirely by ! 181: .I error ! 182: or are written to the standard output. ! 183: .I Error ! 184: inserts the error messages into the source file on the line ! 185: preceding the line the language processor found in error. ! 186: Each error message is turned into a one line comment for the ! 187: language, ! 188: and is internally flagged ! 189: with the string ``###'' at ! 190: the beginning of the error, ! 191: and ``%%%'' at the end of the error. ! 192: This makes pattern searching for errors easier with an editor, ! 193: and allows the messages to be easily removed. ! 194: In addition, each error message contains the source line number ! 195: for the line the message refers to. ! 196: A reasonably formatted source program can be recompiled ! 197: with the error messages still in it, ! 198: without having the error messages themselves cause future errors. ! 199: For poorly formatted source programs in free format languages, ! 200: such as C or Pascal, ! 201: it is possible to insert a comment into another comment, ! 202: which can wreak havoc with a future compilation. ! 203: To avoid this, programs with comments and source ! 204: on the same line should be formatted ! 205: so that language statements appear before comments. ! 206: .PP ! 207: Options available with ! 208: .I error ! 209: are: ! 210: .TP 5 ! 211: .B \-n ! 212: Do ! 213: .I not ! 214: touch any files; all error messages are sent to the ! 215: standard output. ! 216: .TP 5 ! 217: .B \-q ! 218: The user is ! 219: .I queried ! 220: whether s/he wants to touch the file. ! 221: A ``y'' or ``n'' to the question is necessary to continue. ! 222: Absence of the ! 223: .B \-q ! 224: option implies that all referenced files ! 225: (except those referring to discarded error messages) ! 226: are to be touched. ! 227: .TP 5 ! 228: .B \-v ! 229: After all files have been touched, ! 230: overlay the visual editor ! 231: .I vi ! 232: with it set up to edit all files touched, ! 233: and positioned in the first touched file at the first error. ! 234: If ! 235: .I vi ! 236: can't be found, try ! 237: .I ex ! 238: or ! 239: .I ed ! 240: from standard places. ! 241: .TP 5 ! 242: .B \-t ! 243: Take the following argument as a suffix list. ! 244: Files whose suffixes do not appear in the suffix list are not touched. ! 245: The suffix list is dot separated, and ``*'' wildcards work. ! 246: Thus the suffix list: ! 247: .IP ! 248: \& ".c.y.foo*.h" ! 249: .IP ! 250: allows ! 251: .I error ! 252: to touch files ending with ``.c'', ``.y'', ``.foo*'' and ``.y''. ! 253: .TP 5 ! 254: .B \-s ! 255: Print out ! 256: .I statistics ! 257: regarding the error categorization. ! 258: Not too useful. ! 259: .PP ! 260: .I Error ! 261: catches interrupt and terminate signals, ! 262: and if in the insertion phase, ! 263: will orderly terminate what it is doing. ! 264: .SH AUTHOR ! 265: Robert Henry ! 266: .SH FILES ! 267: .ta 2i ! 268: ~/.errorrc function names to ignore for \fIlint\fP error messages ! 269: .br ! 270: /dev/tty user's teletype ! 271: .SH BUGS ! 272: .PP ! 273: Opens the teletype directly to do user querying. ! 274: .PP ! 275: Source files with links make a new copy of the file with ! 276: only one link to it. ! 277: .PP ! 278: Changing a language processor's format of error messages ! 279: may cause ! 280: .I error ! 281: to not understand the error message. ! 282: .PP ! 283: .I Error, ! 284: since it is purely mechanical, ! 285: will not filter out subsequent errors caused by `floodgating' ! 286: initiated by one syntactically trivial error. ! 287: Humans are still much better at discarding these related errors. ! 288: .PP ! 289: Pascal error messages belong after the lines affected ! 290: (error puts them before). The alignment of the `\||\|' marking ! 291: the point of error is also disturbed by ! 292: .I error. ! 293: .PP ! 294: .I Error ! 295: was designed for work on CRT's at reasonably high speed. ! 296: It is less pleasant on slow speed terminals, and has never been ! 297: used on hardcopy terminals.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.