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.