1CPPCHECK(1) cppcheck User Manual CPPCHECK(1)
2
3
4
6 cppcheck - Tool for static C/C++ code analysis
7
9 cppcheck [--check-config] [--check-library] [-D<id>] [-U<id>]
10 [--enable=<id>] [--error-exitcode=<n>] [--errorlist]
11 [--exitcode-suppressions=<file>] [--file-list=<file>]
12 [--force] [--help] [-I<dir>] [--includes-file=<file>]
13 [--config-exclude=<dir>] [--config-excludes-file=<file>]
14 [--include=<file>] [-i<dir>] [--inconclusive] [--inline-suppr]
15 [-j<jobs>] [-l<load>] [--language=<language>]
16 [--library=<cfg>] [--max-configs=<limit>]
17 [--max-ctu-depth=<limit>] [--platform=<type>] [--quiet]
18 [--relative-paths=<paths>] [--report-progress] [--rule=<rule>]
19 [--rule-file=<file>] [--std=<id>] [--suppress=<spec>]
20 [--suppressions-list=<file>] [--suppress-xml=<.xml file>]
21 [--template='<text>'] [--verbose] [--version] [--xml]
22 [--xml-version=<version>]] [file or path] ...
23
25 Cppcheck is a command-line tool that tries to detect bugs that your
26 C/C++ compiler doesn't see. It is versatile, and can check non-standard
27 code including various compiler extensions, inline assembly code, etc.
28 Its internal preprocessor can handle includes, macros, and several
29 preprocessor commands. While Cppcheck is highly configurable, you can
30 start using it just by giving it a path to the source code.
31
33 Analyze given C/C++ files for common errors.
34
35 --check-config
36 Check Cppcheck configuration. The normal code analysis is disabled
37 by this flag.
38
39 --check-library
40 Show information messages when library files have incomplete info.
41
42 -D<id>
43 By default Cppcheck checks all configurations. Use -D to limit the
44 checking. When -D is used the checking is limited to the given
45 configuration. Example: -DDEBUG=1 -D__cplusplus
46
47 -U<id>
48 By default Cppcheck checks all configurations. Use '-U' to
49 explicitly hide certain #ifdef <id> code paths from checking.
50 Example: '-UDEBUG'
51
52 --enable=<id>
53 Enable additional checks. The available ids are:
54
55 all
56 Enable all checks. It is recommended to only use --enable=all
57 when the whole program is scanned, because this enables
58 unusedFunction.
59
60 warning
61 Enable warning messages
62
63 style
64 Enable all coding style checks. All messages with the
65 severities 'style', 'performance' and 'portability' are
66 enabled.
67
68 performance
69 Enable performance messages
70
71 portability
72 Enable portability messages
73
74 information
75 Enable information messages
76
77 unusedFunction
78 Check for unused functions. It is recommend to only enable this
79 when the whole program is scanned
80
81 missingInclude
82 Warn if there are missing includes. For detailed information
83 use --check-config
84
85 By default none of the additional checks are enabled. Several ids
86 can be given if you separate them with commas, e.g.
87 --enable=style,unusedFunction. See also --std
88
89 --error-exitcode=<n>
90 If errors are found, integer <n> is returned instead of default 0.
91 EXIT_FAILURE is returned if arguments are not valid or if no input
92 files are provided. Note that your operating system can modify this
93 value, e.g. 256 can become 0.
94
95 --errorlist
96 Print a list of all possible error messages in XML format.
97
98 --exitcode-suppressions=<file>
99 Used when certain messages should be displayed but should not cause
100 a non-zero exitcode.
101
102 --file-list=<file>
103 Specify the files to check in a text file. One filename per line.
104 When file is -, the file list will be read from standard input.
105
106 -f, --force
107 Force checking of files that have a lot of configurations. Error is
108 printed if such a file is found so there is no reason to use this
109 by default. If used together with --max-configs=, the last option
110 is the one that is effective.
111
112 -h, --help
113 Print help text.
114
115 -I <dir>
116 Give path to search for include files. Give several -I parameters
117 to give several paths. First given path is searched for contained
118 header files first. If paths are relative to source files, this is
119 not needed.
120
121 --includes-file=<file>
122 Specify directory paths to search for included header files in a
123 text file. Add one include path per line. First given path is
124 searched for contained header files first. If paths are relative to
125 source files, this is not needed.
126
127 --config-exclude=<dir>
128 Path (prefix) to be excluded from configuration checking.
129 Preprocessor configurations defined in headers (but not sources)
130 matching the prefix will not be considered for evaluation of
131 configuration alternatives.
132
133 --config-exclude-file=<file>
134 A file that contains a list of config-excludes.
135
136 --include=<file>
137 Force inclusion of a file before the checked file. Can be used for
138 example when checking the Linux kernel, where autoconf.h needs to
139 be included for every file compiled. Works the same way as the GCC
140 -include option.
141
142 -i <dir>
143 Give path to ignore. Give several -i parameters to ignore several
144 paths. Give directory name or filename with path as parameter.
145 Directory name is matched to all parts of the path.
146
147 --inconclusive
148 Allow that Cppcheck reports even though the analysis is
149 inconclusive. There are false positives with this option. Each
150 result must be carefully investigated before you know if it is good
151 or bad.
152
153 --inline-suppr
154 Enable inline suppressions. Use them by placing comments in the
155 form: // cppcheck-suppress memleak before the line to suppress.
156
157 -j <jobs>
158 Start <jobs> threads to do the checking work.
159
160 -l <load>
161 Specifies that no new threads should be started if there are other
162 threads running and the load average is at least <load> (ignored on
163 non UNIX-like systems)
164
165 --language=<language>
166 Forces cppcheck to check all files as the given language. Valid
167 values are: c, c++
168
169 --library=<cfg>
170 Use library configuration.
171
172 --max-configs=<limit>
173 Maximum number of configurations to check in a file before skipping
174 it. Default is 12. If used together with --force, the last option
175 is the one that is effective.
176
177 --max-ctu-depth=<limit>
178 Maximum depth in whole program analysis. Default is 2.
179
180 --platform=<type>
181 Specifies platform specific types and sizes.The available platforms
182 are:
183
184 unix32
185 32 bit unix variant
186
187 unix64
188 64 bit unix variant
189
190 win32A
191 32 bit Windows ASCII character encoding
192
193 win32W
194 32 bit Windows UNICODE character encoding
195
196 win64
197 64 bit Windows
198
199 By default the platform which was used to compile Cppcheck is used.
200
201 -q, --quiet
202 Only print something when there is an error.
203
204 -rp, -rp=<paths>, --relative-paths;, --relative-paths=<paths>
205 Use relative paths in output. When given, <paths> are used as base.
206 You can separate multiple paths by ';'. Otherwise path where source
207 files are searched is used. E.g. if given value is test, when
208 checking test/test.cpp, the path in output will be test.cpp instead
209 of test/test.cpp. The feature uses string comparison to create
210 relative paths, so using e.g. ~ for home folder does not work. It
211 is currently only possible to apply the base paths to files that
212 are on a lower level in the directory tree.
213
214 --report-progress
215 Report progress when checking a file.
216
217 --rule=<rule>
218 Match regular expression to create your own checks. E.g. rule "/ 0"
219 can be used to check division by zero. This command is only
220 available if cppcheck was compiled with HAVE_RULES=yes.
221
222 --rule-file=<file>
223 Use given rule XML file. See
224 https://sourceforge.net/projects/cppcheck/files/Articles/ for more
225 info about the syntax. This command is only available if cppcheck
226 was compiled with HAVE_RULES=yes.
227
228 --std=<id>
229 Set standard. The available options are:
230
231 c89
232 C code is C89 compatible
233
234 c99
235 C code is C99 compatible
236
237 c11
238 C code is C11 compatible (default)
239
240 c++03
241 C++ code is C++03 compatible
242
243 c++11
244 C++ code is C++11 compatible (default)
245
246
247 --suppress=<spec>
248 Suppress a specific warning. The format of <spec> is: [error
249 id]:[filename]:[line]. The [filename] and [line] are optional.
250 [error id] may be * to suppress all warnings (for a specified file
251 or files). [filename] may contain the wildcard characters * or ?.
252
253 --suppressions-list=<file>
254 Suppress warnings listed in the file. Each suppression is in the
255 format of <spec> above.
256
257 --suppress-xml=<.xml file>
258 Use suppressions defined in xml as described in the manual
259
260 --template='<text>'
261 Format the error messages. E.g.
262 '{file}:{line},{severity},{id},{message}' or
263 '{file}({line}):({severity}) {message}'. Pre-defined templates:
264 gcc, vs
265
266 -v, --verbose
267 More detailed error reports
268
269 --version
270 Print out version information
271
272 --xml
273 Write results in XML to error stream
274
275 --xml-version=<version>
276 Select the XML file version. Also implies --xml. Currently only
277 version 2 is available. The default version is 2.
278
280 The program was written by Daniel Marjamäki and Cppcheck team. See
281 AUTHORS file for list of team members.
282
284 Full list of features: https://sourceforge.net/p/cppcheck/wiki/Home/
285
287 Reijo Tomperi <aggro80@users.sourceforge.net>
288 Wrote this manpage for the Debian system.
289
291 Copyright © 2009 - 2016 Reijo Tomperi
292
293 This manual page was written for the Debian system (but may be used by
294 others).
295
296 Permission is granted to copy, distribute and/or modify this document
297 under the terms of the GNU General Public License, Version 3 or (at
298 your option) any later version published by the Free Software
299 Foundation.
300
301 On Debian systems, the complete text of the GNU General Public License
302 can be found in /usr/share/common-licenses/GPL-3.
303
304
305
306
307cppcheck 08/28/2022 CPPCHECK(1)