*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> lint (1)              
Title
Content
Arch
Section
 

Contents


lint(1)			       Silicon Graphics			       lint(1)


NAME    [Toc]    [Back]

     lint - a C	program	checker

SYNOPSIS    [Toc]    [Back]

     lint [options<b>] files

DESCRIPTION    [Toc]    [Back]

     lint detects features of C	program	files which are	likely to be bugs,
     non-portable, or wasteful.	 It also checks	type usage more	strictly than
     the compiler.  lint issues	error and warning messages.  Among the things
     it	detects	are unreachable	statements, loops not entered at the top,
     automatic variables declared and not used,	and logical expressions	whose
     value is constant.	 lint checks for functions that	return values in some
     places and	not in others, functions called	with varying numbers or	types
     of	arguments, and functions whose values are not used or whose values are
     used but none returned.

     Note that this version of lint may	not be fully backwards compatible with
     older versions of lint.  The older	version	became rather useless, since
     it	did not	support	the ANSI C features supported by our C compiler	cc(1).
     While this	is an ANSI C lint, it does not exactly match the ANSI
     conformance modes of cc(1).  In particular, it treats "long long" as
     "long" and	emits a	warning	about the second "long", which is viewed as a
     redundant keyword.	 The __LONGLONG	macro is not predefined	in any of the
     language models (see the -X options) supported by lint.  To get lint like
     warnings with the full cc(1) language and options,	we recommend use of
     the cc(1) option -wlint.  Note that the error and warning messages	from
     lint contain less detail than the cc(1) versions of these messages.

     Arguments whose names end with .c are taken to be C source	files.
     Arguments whose names end with .ln	are taken to be	the result of an
     earlier invocation	of lint	with either the	-c or the -o option used.  The
     .ln files are analogous to	.o (object) files that are produced by the
     cc(1) command when	given a	.c file	as input.  Files with other suffixes
     are warned	about and ignored.

     lint takes	all the	.c, .ln, and llib-lx<b>.ln	(specified by -lx) files and
     processes them in their command line order.  By default, lint appends the
     standard C	lint library (llib-lc.ln) to the end of	the list of files.
     When the -c option	is used, the .ln and the llib-lx<b>.ln files are ignored.
     When the -c option	is not used, the second	pass of	lint checks the	.ln
     and the llib-lx<b>.ln	list of	files for mutual compatibility.

     Any number	of lint	options	may be used, in	any order, intermixed with
     file-name arguments.  The following options are used to suppress certain
     kinds of complaints:

     -a	  Suppress complaints about assignments	of long	values to variables
	  that are not long.






Page 1				 Release 6.4






lint(1)			       Silicon Graphics			       lint(1)



     -b	  Suppress complaints about break statements that cannot be reached.

     -h	  Do not apply heuristic tests that attempt to intuit bugs, improve
	  style, and reduce waste.

     -m	  Suppress complaints about external symbols that could	be declared
	  static.

     -u	  Suppress complaints about functions and external variables used and
	  not defined, or defined and not used.	 (This option is suitable for
	  running lint on a subset of files of a larger	program).

     -v	  Suppress complaints about unused arguments in	functions.

     -x	  Do not report	variables referred to by external declarations but
	  never	used.

     The following arguments alter lint's behavior:

     -Xc  Strict ANSI C	mode.  Similar (but not	identical) to the -ansi	cc(1)
	  mode.

     -Xa  Extended ANSI	C mode.	 Similar (but not identical) to	the -xansi
	  cc(1)	mode.  This is the default mode.

     -Xt  Traditional C	mode.  __STDC__	is not predefined in this mode.
	  Similar (but not identical) to the -cckr cc(1).  mode.

     -Ydir
	  Changes the standard default search directory, which normally	is
	  /usr/include to be the directory given as an argument	to this
	  option.

     -Idir
	  Search for included header files in the directory dir	before
	  searching the	current	directory and/or the standard place.

     -lx  Include the lint library llib-lx<b>.ln.	For example, you can include a
	  lint version of the math library llib-lm.ln by inserting -lm on the
	  command line.	 This argument does not	suppress the default use of
	  llib-lc.ln.  These lint libraries must be in the assumed directory.
	  This option can be used to reference local lint libraries and	is
	  useful in the	development of multi-file projects.

     -Ldir
	  Search for lint libraries in dir before searching the	standard
	  place.

     -n	  Do not check compatibility against the standard C lint library.






Page 2				 Release 6.4






lint(1)			       Silicon Graphics			       lint(1)



     -p	  Attempt to check portability to other	dialects of C.	Along with
	  stricter checking, this option causes	all non-external names to be
	  truncated to eight characters	and all	external names to be truncated
	  to six characters and	one case.

     -s	  Produce one-line diagnostics only.  lint occasionally	buffers
	  messages to produce a	compound report.

     -k	  Alter	the behavior of	/*LINTED [message]*/ directives.  Normally,
	  lint will suppress warning messages for the code following these
	  directives.  Instead of suppressing the messages, lint prints	an
	  additional message containing	the comment inside the directive.

     -y	  Specify that the file	being linted will be treated as	if the
	  /*LINTLIBRARY*/ directive had	been used.  A lint library is normally
	  created by using the /*LINTLIBRARY*/ directive.

     -F	  Print	pathnames of files.  lint normally prints the filename without
	  the path.

     -c	  Cause	lint to	produce	a .ln file for every .c	file on	the command
	  line.	 These .ln files are the product of lint's first pass only,
	  and are not checked for inter-function compatibility.

     -ox  Cause	lint to	create a lint library with the name llib-lx<b>.ln.	 The
	  -c option nullifies any use of the -o	option.	 The lint library
	  produced is the input	that is	given to lint's	second pass.  The -o
	  option simply	causes this file to be saved in	the named lint
	  library.  To produce a llib-lx<b>.ln without extraneous messages, use
	  of the -x option is suggested.  The -v option	is useful if the
	  source file(s) for the lint library are just external	interfaces.

	  Some of the above settings are also available	through	the use	of
	  "lint	comments" (see below).

     -d	  Verbose mode,	which shows the	options, predefined symbols, include
	  paths, etc. that are passed to the lint1 and lint2 passes.

     -V	  Write	to standard error the product name and release.

     lint recognizes the cc(1) command line options -D and -U, silently
     ignores -g	and -O,	while it ignores and warns about others.  The
     predefined	macro lint is defined to allow certain questionable code to be
     altered or	removed	for lint.  Thus, the symbol lint should	be thought of
     as	a reserved word	for all	code that is planned to	be checked by lint.

     Certain conventional comments in the C source will	change the behavior of
     lint:

	  /*ARGSUSEDn*/
	       makes lint check	only the first n arguments for usage; a
	       missing n is taken to be	0 (this	option acts like the -v	option
	       for the next function).


Page 3				 Release 6.4






lint(1)			       Silicon Graphics			       lint(1)



	  /*CONSTCOND*/	or /*CONSTANTCOND*/ or /*CONSTANTCONDITION*/
	       suppresses complaints about constant operands for the next
	       expression.

	  /*EMPTY*/
	       suppresses complaints about a null statement consequent on an
	       if statement.  This directive should be placed after the	test
	       expression, and before the semicolon.  This directive is
	       supplied	to support empty if statements when a valid else
	       statement follows.  It suppresses messages on an	empty else
	       consequent.

	  /*FALLTHRU*/ or /*FALLTHROUGH*/
	       suppresses complaints about fall	through	to a case or default
	       labeled statement.  This	directive should be placed immediately
	       preceding the label.

	  /*LINTLIBRARY*/
	       at the beginning	of a file shuts	off complaints about unused
	       functions and function arguments	in this	file.  This is
	       equivalent to using the -v and -x options.

	  /*LINTED [message]*/
	       suppresses any intra-file warning except	those dealing with
	       unused variables	or functions.  This directive should be	placed
	       on the line immediately preceding where the lint	warning
	       occurred.  The -k option	alters the way in which	lint handles
	       this directive.	Instead	of suppressing messages, lint will
	       print an	additional message, if any, contained in the comment.
	       This directive is useful	in conjunction with the	-s option for
	       post-lint filtering.

	  /*NOTREACHED*/
	       at appropriate points stops comments about unreachable code.
	       [This comment is	typically placed just after calls to functions
	       like exit(2)].

	  /*PRINTFLIKEn*/
	       makes lint check	the first (n-1)	arguments as usual.  The nth
	       argument	is interpreted as a printf format string that is used
	       to check	the remaining arguments.

	  /*PROTOLIBn*/
	       causes lint to treat function declaration prototypes as
	       function	definitions if n is non-zero.  This directive can only
	       be used in conjunction with the
	       /* LINTLIBRARY */ directive.  If	n is zero, function prototypes
	       will be treated normally.

	  /*SCANFLIKEn*/
	       makes lint check	the first (n-1)	arguments as usual.  The nth
	       argument	is interpreted as a scanf format string	that is	used



Page 4				 Release 6.4






lint(1)			       Silicon Graphics			       lint(1)



	       to check	the remaining arguments.

	  /*VARARGSn*/
	       suppresses the usual checking for variable numbers of arguments
	       in the following	function declaration.  The data	types of the
	       first n arguments are checked; a	missing	n is taken to be 0.
	       The use of the ellipsis terminator (...)	in the definition is
	       suggested in new	or updated code.

     lint produces its first output on a per-source-file basis.	 Complaints
     regarding included	files are collected and	printed	after all source files
     have been processed, if -s	is not specified.  Finally, if the -c option
     is	not used, information gathered from all	input files is collected and
     checked for consistency.  At this point, if it is not clear whether a
     complaint stems from a given source file or from one of its included
     files, the	source filename	will be	printed	followed by a question mark.

     The behavior of the -c and	the -o options allows for incremental use of
     lint on a set of C	source files.  Generally, one invokes lint once	for
     each source file with the -c option.  Each	of these invocations produces
     a .ln file	that corresponds to the	.c file, and prints all	messages that
     are about just that source	file.  After all the source files have been
     separately	run through lint, it is	invoked	once more (without the -c
     option), listing all the .ln files	with the needed	-lx options.  This
     will print	all the	inter-file inconsistencies.  This scheme works well
     with make;	it allows make to be used to lint only the source files	that
     have been modified	since the last time the	set of source files were
     linted.

FILES    [Toc]    [Back]

     ROOT		     the directory used	as the root of the default
			     path for finding the lint libraries.

     LPASSDIR		     the directory where the executables for passes 1
			     and 2 of lint must	exist. If this environment
			     variable is undefined, then the default path
			     /usr/lib/lint will	be used	to search for lint1
			     and lint2.

     LIBDIR		     the directory where the lint libraries specified
			     by	the -lx	option must exist.  If this
			     environment variable is undefined,	then the
			     default path /usr/lib/lint	under ROOT will	be
			     used to search for	the libraries.

     LPASSDIR<b>/lint[12]	     first and second passes of	lint

     LIBDIR<b>/llib-lc.ln	     declarations for C	Library	functions (binary
			     format; source is in LIBDIR<b>/llib-lc)






Page 5				 Release 6.4






lint(1)			       Silicon Graphics			       lint(1)



     LIBDIR<b>/llib-lm.ln	     declarations for Math Library functions (binary
			     format; source is in LIBDIR/llib-lm)

     TMPDIR<b>/*lint*	     temporaries

     TMPDIR		     usually /var/tmp but can be redefined by setting
			     the environment variable TMPDIR [see tempnam in
			     tmpnam(3S)].

SEE ALSO    [Toc]    [Back]

      
      
     cc(1), cpp(1), make(1).

BUGS    [Toc]    [Back]

     exit(2), longjmp(3C), and other functions that do not return are not
     understood; this causes various lies.


Page 6				 Release 6.4
[ Back ]
 Similar pages
Name OS Title
tack Linux terminfo action checker
tcpdchk OpenBSD tcp wrapper configuration checker
tcpdchk FreeBSD tcp wrapper configuration checker
tcpdchk Linux tcp wrapper configuration checker
pwck IRIX password file checker
chkconfig IRIX configuration state checker
grpck IRIX group file checker
quotacheck IRIX EFS filesystem quota consistency checker
quotacheck OpenBSD filesystem quota consistency checker
fsck_msdos OpenBSD DOS/Windows (FAT) filesystem consistency checker
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service