如何使用cppcheck';s用于C++;密码? 我想使用CPPCHECK来分析C++代码的静态代码。我了解到我可以使用--inline suppr命令抑制某种警告。 但是,我找不到应该在评论中添加的“抑制错误id”: // cppcheck-suppress "suppressed_error_id"

如何使用cppcheck';s用于C++;密码? 我想使用CPPCHECK来分析C++代码的静态代码。我了解到我可以使用--inline suppr命令抑制某种警告。 但是,我找不到应该在评论中添加的“抑制错误id”: // cppcheck-suppress "suppressed_error_id",c++,static-analysis,error-suppression,cppcheck,C++,Static Analysis,Error Suppression,Cppcheck,根据cppcheck帮助: 错误id是您想要的id 压制。最简单的方法 是使用--xml命令行标志。 从中复制并粘贴id字符串 xml输出 因此,使用--xml标志对一些包含错误的代码运行cppcheck,然后查看生成的xml文件以查找其名称。您可以更改输出模板以从命令行显示错误id,这非常简洁 对于显示错误id的Visual Studio格式输出,请将其添加到命令行: --template "{file}({line}): {severity} ({id}): {message}" 这将产生

根据cppcheck帮助:

错误id是您想要的id 压制。最简单的方法 是使用--xml命令行标志。 从中复制并粘贴id字符串 xml输出


因此,使用
--xml
标志对一些包含错误的代码运行cppcheck,然后查看生成的xml文件以查找其名称。

您可以更改输出模板以从命令行显示错误id,这非常简洁

对于显示错误id的Visual Studio格式输出,请将其添加到命令行:

--template "{file}({line}): {severity} ({id}): {message}"
这将产生如下输出:

s:\src\jpeg.cpp(123): error (bufferAccessOutOfBounds): Buffer access out-of-bounds: abRY
然后,可以通过添加线来抑制:

// cppcheck-suppress bufferAccessOutOfBounds
到源文件中的上一行。

根据,您可以使用
--template
选项更改默认输出以包括id,例如

cppcheck /the/src/file --template='{file}:{line},{severity},{id},{message}'

如果您正在使用GUI,可以右键单击要抑制的消息以弹出菜单。选择“复制消息id”。将消息id粘贴到代码中以代替“抑制的错误id”。

嘿,谢谢你的快速回答,不过你给出的提示很有用——抑制选项放在一个单独的文件中。我试图在代码中使用注释实现同样的效果,但到目前为止,使用这些ID还不太走运。也许,ID是正常的,问题在别处。@btz您为什么认为cppcheck支持在代码注释中放置命令行开关?我运行了。/cppcheck--help和saw--inline suppr option:--inline suppr启用inline suppressions。通过在要抑制的警告之前的行中放置一个或多个注释,以://cppcheck suppress memleak的形式使用它们。试图在我的代码中使用它(使用--inline suppr运行cppcheck),ID取自xml输出,但它对我不起作用。@btz我没有注意到-只是测试了它,你是对的-它不起作用。您好,刚刚用最新的cppcheck版本1.44测试了它,它工作得很好。使用cppcheck suppress时必须记住的事项:1。将“//cppcheck suppress”放在发生要抑制的错误的行之前的新行中。2.提供cppcheck的正确完整路径(我在/home/mycode/other_dir/./test.cpp中使用了错误的路径)3。享受无警告/问题cppcheck报告:-)非常感谢Neil.嗨,您能更详细地描述您所指的GUI吗?似乎您不能在错误id周围加引号:例如,应该是//cppcheck suppress noExplicitConstructor+1,用于使用命令行参数调用cppcheck
--inline supper
来激活cppcheck suppress。这不应该被忘记!您可以使用相同的模板来获取可能的错误id的列表:
cppcheck--errorlist--template='{file}:{line}、{severity}、{id}、{message}'