We are happy to announce the release of Cppcheck Open-Source 2.9!
Cppcheck Open-Source 2.9 reintroduces checks for negative allocations and VLA sizes from version 1.87, allows configuration for pipe()
buffer size, and enhances Windows exception handling output. It introduces options to disable specific exception handling features and improves detection of redundant std::string
and container operations. A new match function for addons enhances pattern matching capabilities. The release also extends math function evaluation in ValueFlow, improves lifetime analysis, propagates condition values, and adds debug intrinsics for detailed analysis.
Release notes:
- restored check for negative allocation (new[]) and negative VLA sizes from cppcheck 1.87 (LCppC backport)
- replaced hardcoded check for pipe() buffer size by library configuration option (LCppC backport)
- on Windows the callstack is now being written to the output specific via "--exception-handling"
- make it possible to disable the various exception handling parts via the CMake options "NO_UNIX_SIGNAL_HANDLING", "NO_UNIX_BACKTRACE_SUPPORT" and "NO_WINDOWS_SEH"
- detect more redundant calls of std::string::c_str(), std::string::substr(), and unnecessary copies of containers
- Add a
match
function to addon similiar to Token::Match
used internally by cppcheck:
|
for either-or tokens(ie struct|class
to match either struct
or class
)
!!
to negate a token
- It supports the
%any%
, %assign%
, %comp%
, %name%
, %op%
, %or%
, %oror%
, and %var%
keywords
- It supports
(*)
, {*}
, [*]
, and <*>
to match links
@
can be added to bind the token to a name
**
can be used to match until a token
- Add math functions which can be used in library function definition. This enables evaluation of more math functions in ValueFlow
- Further improve lifetime analysis with
this
pointers
- Propagate condition values from outer function calls
- Add debug intrinsics
debug_valueflow
and debug_valuetype
to show more detail including source backtraces