Static Code Analysis | PC-lint for C/C++ | Unique Features to find bugs, glitches | Carnica Technology

PC-lint for C/C++: Features
Platforms

PC-lint for C/C++:
Windows 10 / 8 / 7 / Vista / XP / NT / 2000 / 98 / ME
Compatibility
- Supports K&R C, ANSI C, ANSI/ISO C++
- Explicit support for Microsoft, GCC and most other major compilers and libraries
- Support for most major embedded-system compilers including bit addressing.
- Numerous options to support rogue compilers
- Scalars sizes can be specified for cross-compiling
Special Checking Facilities
- Value tracking of auto and static (even global) variable, to detect subtle initialization and value misuse problems
- Inter-function Value Tracking -- The powerful inter-statement value tracking crosses function boundaries. Functions called with specific values are later processed, with these values used to initialize parameters.
- Multi-Pass -- To take full advantage of inter-function tracking and static variable tracking, a multi-pass operation has been introduced. The user can control the number of passes. (See Designer's Notes)
- With value tracking as an enabling technology, we support semantics checking for almost 100 library functions, this checking can be extended to user functions (see function mimicry)
- Optional strong type checking (typedef-based) with a rich option set to detect nominal type differences. You can even form a fully checked type hierarchy of scalar types using only typedef
- User-defined semantic checking for function arguments and return values
- Find unused macros, typedef's, classes, members, declarations, etc. across the entire project (see weak definials)
- Checks flow of control for possibly uninitialized variables.
- Explicit support for a subset of the MISRA C and MISRA C++ (TM) (Motor Industry Software Reliability Association) standards
- Other special torture tests
Speed
- Multiple modules are processed at high speed using pre-compiled headers
Message Suppression and Enabling:
- By message number
- By message number and symbol name (including wild cards)
- By message number and symbol type
- By message number and message parameter
- One-line suppression
- By macro name
- For library headers, by message number (a header is library depending on how it is included; this can be overridden via user options)
- For specified functions, by message number
- For expressions
Flexibility
- Indirect files (nested to any depth) can contain filenames, options, environment variables
- Format of lint error messages can be customized to support integration with a wide variety of editors and IDEs
- All options can be embedded in user code
Performance
- Fast one-pass operation, with a multi-pass option for inter-function value tracking
- Robust - tables will expand as needed to handle large applications