Cppcheck Versions Save

static analysis of C/C++ code

1.87

5 years ago

Command line interface:

  • --project can now import Cppcheck GUI projects.

New checks:

  • Condition is always true when array address is compared with 0.
  • function argument expression calculation has known result (#8830)

Improvements:

  • Better lifetime checking (using pointer/reference that points at deleted object)
  • Improved whole program analysis
  • Better handling of language extension var@address.
  • Many improvements in parser to handle templates, type aliases, etc better

Configuration:

  • new configuration for boost
  • much better wxwidgets configuration

Addons:

  • New addon for checking naming conventions. Naming conventions are configured in json file.

Performance: According to daca@home Cppcheck-1.87 is in average 10% faster than Cppcheck-1.86.

1.86

5 years ago

General:

  • Many fixes in the template simplifier
  • Several fixes in the abstract syntax tree.

Checking improvements:

  • New check: passing address of char to function that expects a strz
  • New check: shadow variables
  • Improved lifetime checking
  • Improved STL iterators checking
  • Improved data flow analysis

New libraries:

  • zlib
  • googletest

Addons:

  • misra.py: Fixes for suppressions and exclusions
  • namingng.py: New addon to check naming conventions. Rules are specified in json file.

1.85

5 years ago

General:

  • We are modernizing the Cppcheck code. Support for MSVC 2010 and GCC 4.4 is dropped. You now need a compiler that is at least as good as MSVC 2013 or GCC 4.6.
  • According to "daca@home" (http://cppcheck.osuosl.org:8000)
    • There are fewer crashes.
    • Cppcheck-1.85 is ~25% slower than Cppcheck-1.84

Checking improvements:

  • New check: Suggest STL algorithms instead of hard-coded for loops
  • New check: Warn about ineffective algorithms (same iterator passed)
  • New check: Mismatching iterators used together in operators
  • Container (STL/Qt/WxWidgets/etc) access out of bounds
  • Improved the checkers that warns about same/opposite expressions, track variable values better.
    • logical conjunctions
    • identical/opposite inner expressions
    • same expressions around operator
    • etc
  • Variable scope: warn about references also

Graphical user interface:

  • You can specify undefines in the project file dialog
  • Fixed configuration of suppressions
  • Windows: Fixed issue of wrong/no theme being applied to UI elements

Misra:

  • support per file excludes from cppcheck
  • support per file suppressions from cppcheck
  • summary will now summarize results for all files again
  • a few false positives were fixed

1.84

5 years ago

New checks:

  • Same rhs expression used in consecutive assignments
  • Added more misra checkers
  • Function overrides base class function but is not marked with the override keyword

Improved checks:

  • Identical inner condition
  • Opposite expressions
  • Call to virtual function in constructor or destructor
  • Variable not initialized by private constructor
  • A class that has dynamic allocation needs copy constructor, assignment operator and destructor

Misc:

  • Various performance optimisations
  • Better support for C++17
  • --template=gcc format has been updated to match gcc output better.
  • We added a --template-location that can be used to format multiline messages.
  • Update --template so the piece of code with the warning can be shown
  • Symbol-based suppressions
  • XML based suppressions format

Addons:

  • cert.py: Attempting to cast away const
  • misc.py: String concatenation in array initialization
  • misc.py: Passing struct to ellipsis function
  • misc.py: Function overrides base class function but is not marked with the virtual keyword

Compiling: We dropped support for some old compilers. From now on you need gcc 4.6 or later / visual studio 2013 or later / other compiler with c++11 support.

1.83

6 years ago

Command line:

  • fixes in parser
  • Improved loading of platform files.

GUI:

  • few minor improvements in user interface
  • Code preview
  • Added MISRA addon integration
  • Platform can be selected in project settings
  • Fixed issue when loading xml results file

Addons:

  • We are now officially releasing our MISRA addon. So far it supports MISRA C 2012.

1.82

6 years ago

Bug fixes:

  • Better handling of namespaces
  • Fixed false positives
  • Fixed parsing of compile databases
  • Fixed parsing of visual studio projects

Enhancements

  • New check; Detect mistakes when there are multiple strcmp() in condition Example:

    if (strcmp(password,"A")==0 || strcmp(password,"B")==0 || strcmp(password,"C"))
    

    There is a missing '==0', and therefore this condition is always true except when password is "C".

  • New check; pointer calculation result can't be NULL unless there is overflow Example:

    someType **list_p = ...;
    if ((list_p + 1) == NULL)
    

    The result for '(list_p + 1)' can't be NULL unless there is overflow (UB).

  • New check; public interface of classes should be safe - detect possible division by zero Example:

    class Fred {
    public:
    void setValue(int mul, int div) {
      value = mul / div; // <- unsafe
    }
    ...
    

    This check does not consider how Fred::setValue() is really called. If you agree that the public interface of classes should always be safe; it should be allowed to call all public methods with arbitrary arguments, then this checker will be useful.

  • Fixed a few false negatives

  • More information in the cfg files

1.81

6 years ago

CPPCHECK:

  • New warning: Check if condition after an early return is overlapping and therefore always false.
  • Improved knowledge about C/C++ standard, windows, posix, wxwidgets, gnu
  • Better handling of Visual Studio projects

GUI:

  • Compile: Qt5 is now needed to build the GUI
  • Compile: New qmake flag HAVE_QCHART
  • Project: You can now run cppcheck-addons
  • Project: We have integrated clang-tidy
  • Results view: Reload last results (if cppcheck build dir is used) when GUI is started
  • Results view: Tag the warnings with custom keywords (bug/todo/not important/etc..)
  • Results view: Shows when warning first appeared (since date)
  • Results view: Suppress warnings through right-click menu
  • Statistics: Added charts (shown if Qt charts module is enabled during build)

1.80

6 years ago

Checking improvements:

  • Added platform for Atmel AVR 8 bit microcontrollers (avr8)
  • Better 'callstacks' in cppcheck messages
  • Improved gnu.cfg, posix.cfg, wxwidgets.cfg and std.cfg, added motif.cfg
  • Various improvements to AST, ValueFlow analysis and template parsing

Command line changes:

  • Deprecated command line argument --append has been removed
  • New command line argument --plist-output to create .plist files
  • New command line argument --output-file to print output to file directly
  • Check OpenCL files (.cl)

GUI:

  • Support export of statistics to PDF
  • Several small usability improvements

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

1.79

7 years ago

General changes:

  • C++ code in C files is rejected now (use --language=c++ to enforce checking the code as C++)
  • Write function access type to XML dump

Checking improvements:

  • Improved configuration extraction in preprocessor
  • Improved accuracy of AST
  • Improved template parsing
  • Improved support for (STL) containers in SymbolDatabase
  • Improved support for C++11's 'auto' type
  • Experimental support for uninitialized variables in ValueFlow analysis
  • Added qt.cfg and sfml.cfg, improved several existing .cfg files

GUI:

  • Use CFGDIR macro

Windows installer:

  • We have dropped support for Windows XP in the precompiled binary. It was too much work to maintain the toolset.

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

1.78

7 years ago

General changes:

  • Reduced memory usage by up to 10% by reducing size of token list

New checks:

  • Mismatching argument names between function declaration and definition
  • Detect classes which have a copy constructor but no copy operator and vice versa

Checking improvements:

  • Improved matching of overloaded functions
  • Improved ValueType analysis, especially related to allocations with "new" and C++11's "auto"
  • Improved support for C++11 brace initialization
  • Improved ValueFlow analysis
  • Improved template parsing
  • Improved detection of memory leaks
  • Improved nullpointer checking when nullptr and NULL are used
  • Detect array out of bounds across compilation units
  • Extended windows.cfg, posix.cfg and std.cfg

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