LCLint Version 2.2

26 August 1996

Version 2.2 is a minor upgrade to the last publically released version of LCLint, Version 2.1b.

Bug Fixes

All known bugs in Version 2.1b have been fixed.

New Features


The LCLint distribution now includes a POSIX standard library (contributed by Jens Schweikhardt). Strict versions of the POSIX and UNIX libraries are also provided. Flags may be used to select the standard libraries: posixlib, posixstrictlib, unixlib and unixstrictlib. The skip-posix-headers flag controls inclusion of header files associated with the POSIX library when a library that includes the POSIX library (either posixlib or unixlib) is ussed.

Prototype Parameters

If proto-param-name is set, LCLint will report messages for named parameters in prototypes. (Note, this is dangerous since the name could be defined by a macro.) A new namespace is added to handle prototype parameter names --- the proto-param-prefix and proto-param-prefix-exclude flags control checking for prototype parameter names. If proto-param-match is set, a message is reported if the name of the parameter in the prototype (after removing the protoprarmprefix, if set) does not match the name of the corresponding parameter in the function definition.

Array Formal Parameters

LCLint reports an error if the sizeof operator is used with an operand that is a formal parameter declared as an array (controlled by sizeof-formal-array).

A message is reported is a formal array parameter is declared with a size if fixed-formal-array is set. A message is reported for any formal array parameter if formal-array is set.

Flag Names

Flag names may now include hyphens (-), underscores (_) and spaces to enhance legibility. These characters are stripped from the flag before it is interpreted.

Arbitrary Integral Types

LCLint now supports more flexible arbitrary integral types, including unsignedintegral and signedintegral.

Other New Flags

Identifier is a C++ keyword or reserved word. This could lead to problems if the code is compiled with a C++ compiler.
Report undocumented file system modifications.
A comment open sequence (/*) appears within a comment. This usually means an earlier comment was not closed.
An extern declaration is used inside a function scope.


Many people have contributed to this release with suggestions for new features, bug reports, and bug fixes. As always, LCLint development is largely user-driven, and your comments and suggestions are much appreciated. Special thanks go to Richard O'Keefe for suggesting many of the new checks and Jens Schweikhardt for contributing the POSIX library. I hope his example will inspire others to contribute standard libraries to future LCLint releases.

Previous release notices

LCLint Home Page David Evans
University of Virginia, Computer Science