Release Notes for Cppcheck 2.21
Major bug fixes & crashes:
- Fixed potential crash with incomplete preprocessor directive
- Fixed hang in createAst
- Fixed invalid AST for braced initialization and references/pointers
- Fixed cppcheckError with array typedef
- Fixed recheck which now correctly excludes non selected files
- Fixed potential crash when rechecking files in gui
New checks:
- MISRA C 2012 rule 10.3 now warns on assigning integer literals 0 and 1 to bool in C99 and later while preserving the existing C89 behavior.
- funcArgNamesDifferentUnnamed warns on function declarations/definitions where a parameter in either location is unnamed
- uninitMemberVarNoCtor warns on user-defined types where (1) some but not all members requiring initialization have in-class initializers or (2) there is a mixture of members which do/do not require initialization.
- fcloseInLoopCondition warns when fclose() is used as a while loop condition, which may skip the loop body or double-close the file handle.
C/C++ support:
- import project: include path in compile_commands.json now handled correctly
GUI:
- Removed handling of Cppcheck Premium LOC license
Other:
- Make it possible to specify the regular expression engine using the
engineelement in a rule XML. - Added CLI option
--exitcode-suppressto specify an error ID which should not result in a non-zero exitcode. - Moved source code from https://github.com/danmar/cppcheck to https://github.com/cppcheck-opensource/cppcheck
- The official Windows binary is now built with Visual Studio 2026.
- Updated simplecpp to 1.7.0.