|
|
|
PC-lint/FlexeLint Version 8.00 has more than 800 error messages. For
detailed information, browse through the ASCII file,
msg.txt
which is a listing of all the error messages that PC-lint/FlexeLint will
generate. If you prefer you can download
msg.zip
(PKZipped file of msg.txt)
PC-lint/FlexeLint will detect - For C++ ...
- order of initialization dependencies
- class members not initialized by constructor
- pointer members not deleted by destructors
- base class destructors that are not virtual
- names hiding other names
- improperly formed or missing assignment operators and copy constructors
- missing destructors from classes using dynamic allocation
- out-of-order constructor initializers
- creation of temporaries
- undefined and unreferenced class members initialization of a non-const
reference with a non-lvalue
- assignment operator not first checking for assignment to this
- inconsistent use of extern "C"
- operator delete not checking argument for NULL
- static variables in in-line functions in headers
- exposing privileged data
- failure to copy a base class, or to use the base class copy constructor
- failure to assign members and base classes
- issuing throw within a destructor
- assignment of an array to a base class pointer
- inconsistent or incomplete exception specifications
- failure to reference a virtual member function
- a virtual function with a default parameter
- redundant access specifiers
- binary operators that should be non-member functions or that return
references, or that shouldn't be user defined or operators that should be
defined
- function parameters that could be declared const reference
- ill-defined increment and decrement operators
- catch parameters that are not references
- An examination is made of all the base class hierarchies in the entire project to determine non-virtual classes included twice, or virtual
classes not included twice in any class hierarchy.
PC-lint/FlexeLint will detect - For C and C++...
- from value tracking information we can detect
under many circumstances:
- use of NULL pointer in unary * or ->
- creation and access of out-of-bounds pointers
- subscript out-of-bounds
- division by zero
- passing NULL pointers to selected library functions
- data over-run conditions on selected library functions
- Booleans that always evaluate true or evaluate false
- inappropriate deallocation
- memory leaks
- unusual values passed to functions based on user-defined semantic specifications
- from a special macro scan we can find
- passing an expression to an unparenthesized macro parameter
- passing an expression with side effects to a repeated macro parameter
- unparenthesized expression-like macros
- intermodule type inconsistencies
- uninitialized variables (auto, static and global scalars,
arrays and structs)
- unused variables and functions
- assigned but not accessed variables (including globals)
- unreachable code
- unusual expressions such as: flags & 4 == 0 (precedence
error)
- constant Booleans as in: if( x = 0 ) ...
- indentation checking
- suspicious use of semi-colons as in if( a > b ); not
followed by else
- strict and loose enumeration checking
- printf-scanf format checking
- order of evaluation errors as in: a[i] = i++;
- unsigned comparisons with 0
- wide variety of loss of precision errors such as int to
char featuring our exclusive precision tracking
- excessive shift values
- loss of sign
- suspicious cast
- mixed signed and unsigned quantities
- comments within comments
- unused compile time objects, including macros, typedef’s,
declarations, class’es, union’s, enum’s
- ANSI quiet changes
- unused headers
- returning pointers to auto addresses and assigning auto
address to static
- externals that can be made static and hence hidden
- declarations that can be offloaded from headers
- name clashes within the first count characters
- strong type checking based on typedef
types.
- possibly uninitialized variables based on
flow of control.
- overflow while processing arithmetic constants (E.g. for 16 bit
integers, 200*200 overflows)
- constant expressions that reduce to zero
- suspicious truncations
- suspicious loss of fraction
- initialization irregularities (too few, too many, incorrect shape,
string concatenations in)
|
|
|
Home | Contact
| Order
PC-lint and FlexeLint are trademarks of Gimpel Software
Copyright © 2008, Gimpel Software, All rights reserved.
|
|