• Out of bounds

  • Exception safety

  • Memory leaks

  • Obsolete functions are used

  • Invalid usage of STL

  • Uninitialized variables and unused functions

Cppcheck在使用上能下載Standalone Client直接使用,或是能透過外掛的方式跟現有的開發環境整合,這邊可參閱Cppcheck - A tool for static C/C++ code analysis上的資料,開放源碼的外掛與商業授權的外掛都整理得很仔細:

Clients and plugins (open source):

Clients and plugins (commercial)

  • Visual Studio / Eclipse - Visual Lint by RiverBlade

  • Command line - LintProject by RiverBlade







要查閱程式碼時可用滑鼠連點,Cppcheck會用記事本帶出對應的程式碼 。








另外一提,Cppcheck也允許透過Command的方式使用,所以我們也能利用他跟Visual Studio外部工具整合,將分析結果導到輸出視窗。這邊就不多做介紹,有興趣的可以在MS-Dos下運行Cppcheck就可以看到進一步的使用方法。

Cppcheck - A tool for static C/C++ code analysis

cppcheck [OPTIONS] [files or paths]

If a directory is given instead of a filename, .cpp, .cxx, .cc, .c++, .c, .tpp, and .txx files are checked recursively from the given directory.

–append=<file> This allows you to provide information about
functions by providing an implementation for them.
–check-config Check cppcheck configuration. The normal code
analysis is disabled by this flag.
-D<ID> By default Cppcheck checks all configurations.
Use -D to limit the checking. When -D is used the
checking is limited to the given configuration.
Example: -DDEBUG=1 -D__cplusplus
–enable=<id> Enable additional checks. The available ids are:
Enable all checks
Enable all coding style checks. All messages
with the severities ‘style’, ‘performance’
and ‘portability’ are enabled.
Enable performance messages
Enable portability messages
Enable information messages
Check for unused functions
Warn if there are missing includes.
For detailed information use –check-config
Several ids can be given if you separate them with
–error-exitcode=<n> If errors are found, integer [n] is returned instead
of the default 0. 1 is returned
if arguments are not valid or if no input files are
provided. Note that your operating system can
modify this value, e.g. 256 can become 0.
–errorlist Print a list of all the error messages in XML format.
Used when certain messages should be displayed but
should not cause a non-zero exitcode.
–file-list=<file> Specify the files to check in a text file. Add one
filename per line. When file is -, the file list will
be read from standard input.
-f, –force Force checking of all configurations in files that have
“too many” configurations.
-h, –help Print this help.
-I <dir> Give include path. Give several -I parameters to give
several paths. First given path is checked first. If
paths are relative to source files, this is not needed.
-i <dir or file> Give a source file or source file directory to exclude
from the check. This applies only to source files so
header files included by source files are not matched.
Directory name is matched to all parts of the path.
–inline-suppr Enable inline suppressions. Use them by placing one or
more comments, like: // cppcheck-suppress warningId
on the lines before the warning to suppress.
-j <jobs> Start [jobs] threads to do the checking simultaneously.
–platform=<type> Specifies platform specific types and sizes. The
available platforms are:
32 bit unix variant
64 bit unix variant
32 bit Windows ASCII character encoding
32 bit Windows UNICODE character encoding
64 bit Windows
-q, –quiet Only print error messages.
–report-progress Report progress messages while checking a file.
–rule=<rule> Match regular expression.
–rule-file=<file> Use given rule file. For more information, see:
-s, –style Deprecated, use –enable=style
–std=posix Code is posix
–std=c99 Code is C99 standard
–suppress=<spec> Suppress warnings that match <spec>. The format of
<spec> is:
[error id]:[filename]:[line]
The [filename] and [line] are optional. If [error id]
is a wildcard ‘
‘, all error ids match.
Suppress warnings listed in the file. Each suppression
is in the same format as <spec> above.
–template ‘<text>’ Format the error messages. E.g.
‘{file}:{line},{severity},{id},{message}’ or
‘{file}({line}):({severity}) {message}’
Pre-defined templates: gcc, vs
-v, –verbose Output more detailed error information.
–version Print out version number.
–xml Write results in xml format to error stream (stderr).
Select the XML file version. Currently versions 1 and 2
are available. The default version is 1.
Example usage:
# Recursively check the current folder. Print the progress on the screen and
write errors to a file:
cppcheck . 2> err.txt
# Recursively check ../myproject/ and don’t print progress:
cppcheck –quiet ../myproject/
# Check only files one.cpp and two.cpp and give all information there is:
cppcheck -v -s one.cpp two.cpp
# Check f.cpp and search include files from inc1/ and inc2/:
cppcheck -I inc1/ -I inc2/ f.cpp

For more information:
cppcheck: error: could not find or open any of the paths given.


  • Cppcheck

  • Cppcheck - A tool for static C/C++ code analysis

  • Cppcheck - A tool for static C/C++ code analysis

  • cppcheck的简单介绍