Menu

Cppcheck-1.67

Cppcheck-1.67 has been released.

General changes:
- Library files have now a 'format' attribute. Format version 1 is assumed by default
- Cppcheck does no longer abort checking if unhandled characters (Non-ASCII) are found

New checks:
- Check for unused return values
- Detect shift by too many bits, signed integer overflow and dangerous sign conversion
- Recommend usage of expm1(), log1p(), erfc()
- Division by sizeof() as parameter to memset/memcpy/memmove/etc. as they expect a size in bytes
- Several new va_arg related checks:
-- Wrong parameter passed to va_start()
-- Reference passed to va_start()
-- Missing va_end()
-- Using va_list before it is opened
-- Subsequent calls to va_start/va_copy()
- Initialization by itself in initializer list
- Dead pointer usage when pointer alias local variable that has gone out of scope

Improvements:
- Support uniform initialization syntax (C++11)
- Much improvements to value flow analysis
- Improved AST creation (support placement new, C++-style casts, templates, operator new[], ...)
- Improved lambda support
- Support GCC extension attriute((used)) and MSVC extension __declspec(property)
- Better support for static member variables, inherited variables and namespaces
- Improved typedef support where multiple variables are declared at once
- Avoid checking code multiple times by calculating a checksum. Duplicate preprocessor configurations are eliminated by this.
- Support C++03/C 'auto' keyword
- HTML report: display 'verbose' message using clickable expandable divs

Additionally, lots of false positives and bugs have been fixed and several existing checks have been improved.

Posted by Daniel Marjamäki 2014-10-18

Log in to post a comment.