安装QT
自行安装
执行扫描
执行参数信息
cppcheck.exe --doc // 查看当前版本支持的所有规则清单
cppcheck --errorlist // 查看所有规则和规则描述信息
--enable=all //默认会启动所有扫描规则,但是经测试未使用的函数规则未启动
--enable=warning,performance,portability,information,missingInclude // 开启这几种类型检查
--disable=missingInclude // 弃用某种检查器
--suppress=missingInclude // 忽略某种警告
--std=c++11 // 使用c++11标准
Cppcheck - 静态 C/C++ 代码分析工具
语法:
cppcheck [选项] [文件或路径]
如果给出目录而不是文件名,则从给定的目录递归检查 *.cpp、*.cxx、*.cc、*.c++、*.c、*.ipp、*.ixx、*.tpp 和 *.txx 文件。
Options:
--addon=<addon>
执行插件。 即--addon=misra。 如果必须提供选项,则需要 json 配置。
--addon-python=<python interpreter>
您可以在插件 json 文件中或通过此命令行选项指定 python 解释器。如果不存在,Cppcheck 将首先尝试“python3”,然后再尝试“python”。 --cppcheck-build-dir=<dir>
Cppcheck 工作文件夹。 优点:
* 整个程序分析
* 更快的分析; 如果文件的哈希值未更改,Cppcheck 将重用结果。
* 一些有用的调试信息,即用于执行 clang/clang-tidy/addons 的命令。
--check-config 检查 cppcheck 配置。 该标志禁用正常的代码分析
--check-library 当库文件信息不完整时显示信息消息。
--clang=<path> 实验:使用 Clang 解析器而不是内置的 Cppcheck 解析器。 将可执行文件作为可选参数,默认为“clang”。 Cppcheck 将运行给定的 Clang 可执行文件,导入 Clang AST 并将其转换为 Cppcheck 数据。 之后使用正常的 Cppcheck 分析。 如果未给出路径,则必须在 PATH 中包含可执行文件。
--config-exclude=<dir>
要从配置检查中排除的路径(前缀)。 与前缀匹配的标头(但不是源)中定义的预处理器配置将不会被考虑进行评估。
--config-excludes-file=<file>
包含配置排除列表的文件
--dump 转储每个翻译单元的 xml 数据。 转储文件的扩展名为 .dump,包含 ast、tokenlist、symboldatabase、valueflow。
-D<ID> 定义预处理器符号。 除非使用 --max-configs 或 --force,否则 Cppcheck 将仅在使用 -D 时检查给定的配置。 示例:'-DDEBUG=1 -D__cplusplus'.
-E 在标准输出上打印预处理器输出,并且不进行任何进一步的处理。
--enable=<id> 启用附加检查。 可用的 id 是:
* all
启用所有检查。 建议仅在扫描整个程序时使用--enable=all,因为这会启用unusedFunction。
* warning
启用警告消息
* style
启用所有编码风格检查。 所有具有“样式”、“警告”、“性能”和“可移植性”严重性的消息均已启用。
* performance
启用性能消息
* portability
启用可移植性消息
* information
Enable information messages
* unusedFunction
检查是否有未使用的功能。 建议仅在扫描整个程序时启用此功能。
* missingInclude
如果缺少包含内容,则发出警告。 有关详细信息,请使用“--check-config”。
如果用逗号分隔,可以给出多个 id。 另请参阅--std
--error-exitcode=<n> 如果发现错误,则返回整数 [n] 而不是默认的“0”。 如果参数无效或未提供输入文件,则返回“1”。 请注意,您的操作系统可以修改此值,例如 ‘256’可以变成‘0’。
--errorlist 以 XML 格式打印所有错误消息的列表。
--exitcode-suppressions=<file>
当应显示某些消息但不应导致非零退出代码时使用。
--file-filter=<str> 仅分析与给定过滤器 str 匹配的文件 可多次使用 示例: --file-filter=*bar.cpp 仅分析以 bar.cpp 结尾的文件。
--file-list=<file> 指定要签入文本文件的文件。 每行添加一个文件名。 当 file 为“-”时,将从标准输入读取文件列表。
-f, --force 强制检查文件中的所有配置。 如果与“--max-configs=”一起使用,则最后一个选项有效。
-h, --help Print this help.
-I <dir> 给出搜索包含文件的路径。 给出几个 -I 参数来给出多个路径。 首先在第一个给定路径中搜索包含的头文件。 如果路径是相对于源文件的,则不需要这样做。
--includes-file=<file>
指定目录路径以搜索文本文件中包含的头文件。 每行添加一个包含路径。 首先在第一个给定路径中搜索包含的头文件。 如果路径是相对于源文件的,则不需要这样做。
--include=<file>
强制在检查的文件之前包含一个文件。
-i <dir or file> 给出要从检查中排除的源文件或源文件目录。 这仅适用于源文件,因此源文件包含的头文件不匹配。 目录名称与路径的所有部分匹配。
--inconclusive 即使分析尚无结论,也允许 Cppcheck 报告。 此选项存在误报。 每个结果都必须仔细研究,然后才能知道它是好还是坏。
--inline-suppr 启用内联抑制。 通过在要抑制的警告之前的行上放置一个或多个注释来使用它们,例如:“// cppcheck-suppress warningId”。
-j <jobs> 启动 <jobs> 线程同时进行检查。
--language=<language>, -x <language>
强制 cppcheck 检查给定语言的所有文件。 有效值为:c、c++
--library=<cfg> 加载包含有关类型和函数的信息的文件 <cfg>。 有了这些信息,Cppcheck 可以更好地理解您的代码,因此您可以获得更好的结果。 随 Cppcheck 分发的 std.cfg 文件会自动加载。 有关库文件的更多信息,请阅读手册。
--max-configs=<limit>
在跳过文件之前要签入文件的最大配置数。 默认值为“12”。 如果与“--force”一起使用,则最后一个选项有效。
--max-ctu-depth=N 整个程序分析的最大深度。 默认值为 2。值越大意味着可以发现更多错误,但也意味着分析速度会更慢。
--output-file=<file> 将结果写入文件,而不是标准错误。
--platform=<type>, --platform=<file>
指定平台特定的类型和大小。 可用的内置平台有:
* unix32
32 bit unix variant
* unix64
64 bit unix variant
* win32A
32 位 Windows ASCII 字符编码
* win32W
32 位 Windows UNICODE 字符编码
* win64
64 bit Windows
* avr8
8位AVR微控制器
* elbrus-e1cp
Elbrus e1c+ architecture
* pic8
8 位 PIC 微控制器 基线和中档架构
* pic8-enhanced
8 位 PIC 微控制器增强型中端和高端 (PIC18) 架构
* pic16
16位PIC单片机
* mips32
32 位 MIPS 微控制器
* native
假设主机系统的类型大小,但没有进一步的假设。
* unspecified
Unknown type sizes
--plist-output=<path>
在文件夹中生成 Clang-plist 输出文件。
--project=<file> 对项目运行 Cppcheck。 <文件> 可以是 Visual Studio 解决方案 (*.sln)、Visual Studio 项目 (*.vcxproj)、编译数据库 (compile_commands.json) 或 Borland C++ Builder 6 (*.bpr)。 将使用指定文件中要分析的文件,包括路径、定义、平台和未定义。
--project-configuration=<config>
如果与 Visual Studio 解决方案 (*.sln) 或 Visual Studio 项目 (*.vcxproj) 一起使用,您可以限制 cppcheck 应检查的配置。 例如:'--project-configuration=Release|Win32'
-q, --quiet 不显示进度报告。
-rp=<paths>, --relative-paths=<paths>
在输出中使用相对路径。 当给定时,<paths> 用作基础。 您可以通过“;”分隔多个路径。 否则使用搜索源文件的路径。 我们使用字符串比较来创建相对路径,因此使用例如 ~ 对于主文件夹不起作用。 目前只能将基本路径应用于目录树中较低级别的文件。
--report-progress 检查文件时报告进度消息。
--rule=<rule> 匹配正则表达式。
--rule-file=<file> 使用给定的规则文件。 有关更多信息,请参阅:http://sourceforge.net/projects/cppcheck/files/Articles/
--std=<id> Set standard.
可用的选项有:
* c89
C code is C89 compatible
* c99
C code is C99 compatible
* c11
C code is C11 compatible (default)
* c++03
C++ code is C++03 compatible
* c++11
C++ 代码与 C++11 兼容
* c++14
C++ code is C++14 compatible
* c++17
C++ code is C++17 compatible
* c++20
C++ code is C++20 compatible (default)
--suppress=<spec> 抑制与 <spec> 匹配的警告。 <spec> 的格式为:
[error id]:[filename]:[line] The [filename] and [line] are optional. If [error id] is a wildcard '*', all error ids match.
--suppressions-list=<file>
抑制文件中列出的警告。 每个抑制的格式与上面的 <spec> 相同。
--suppress-xml=<file>
禁止 xml 文件中列出的警告。 XML 文件应遵循章节中指定的手册.pdf 格式。 `6.4 XML 抑制`。
--template='<text>' 设置错误消息的格式。 可用字段:
{file} file name
{line} line number
{column} column number
{callstack} 显示调用堆栈。 示例: [file.c:1] -> [file.c:100]
{inconclusive:text} 如果警告不确定,则写入文本
{severity} severity
{message} warning message
{id} warning id
{cwe} CWE id(常见弱点枚举)
{code} 显示真实代码
\t insert tab
\n insert newline
\r 插入回车符
Example formats:
'{file}:{line},{severity},{id},{message}' or '{file}({line}):({severity}) {message}' or '{callstack} {message}' 预定义模板:gcc(默认)、cppcheck1(旧默认)、vs、edit。
--template-location='<text>'
格式化错误消息位置。 如果未提供,则不会显示额外的位置信息。
可用字段:
{file} file name
{line} line number
{column} column number
{info} location info
{code} show the real code
\t insert tab
\n insert newline
\r insert carriage return
Example format (gcc-like): '{file}:{line}:{column}: note: {info}\n{code}'
-U<ID> 取消定义预处理器符号。 使用 -U 显式隐藏某些 #ifdef <ID> 代码路径以防止检查。
示例:“-UDEBUG”
-v, --verbose 输出更详细的错误信息。
--version 打印出版本号。
--xml 将结果以 xml 格式写入错误流 (stderr)。
Example usage:
# 递归检查当前文件夹。 在屏幕上打印进度并
# 将错误写入文件:
cppcheck . 2> err.txt
# 递归检查../myproject/并且不打印进度:
cppcheck --quiet ../myproject/
# 检查test.cpp,启用所有检查:
cppcheck --enable=all --inconclusive --library=posix test.cpp
# 检查 f.cpp 并搜索 inc1/ 和 inc2/ 中的包含文件:
cppcheck -I inc1/ -I inc2/ f.cpp
For more information:
https://cppcheck.sourceforge.io/manual.pdf