如何对 C++ 代码使用 cppcheck 的内联抑制过滤器选项?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2956331/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to use cppcheck's inline suppression filter option for C++ code?
提问by Blaise
I would like to use Cppcheck for static code analysis of my C++ code. I learned that I can suppress some kind of warnings with --inline-suppr
command.
However, I can't find what "suppressed_error_id" I should put in the comment:
我想使用 Cppcheck 对我的 C++ 代码进行静态代码分析。我了解到我可以使用--inline-suppr
命令抑制某种警告。但是,我找不到应该在评论中输入什么“suppressed_error_id”:
// cppcheck-suppress "suppressed_error_id"
采纳答案by Andy Krouwel
According to the cppcheck help:
根据 cppcheck 帮助:
The error id is the id that you want to suppress. The easiest way to get it is to use the --xml command line flag. Copy and paste the id string from the xml output.
错误 id 是您要抑制的 id。获得它的最简单方法是使用 --xml 命令行标志。从 xml 输出中复制并粘贴 id 字符串。
So run cppcheck against some code that contains the error with the --xml
flag, and then look in the generated XML file to find its name.
因此,对一些包含带有--xml
标志的错误的代码运行 cppcheck ,然后在生成的 XML 文件中查找它的名称。
回答by Andy Krouwel
You can change the output template to display the error id from the command line, which is quite neat.
您可以更改输出模板以从命令行显示错误 id,这非常简洁。
For a Visual Studio format output with error id displayed, add this to your command line:
对于显示错误 ID 的 Visual Studio 格式输出,请将其添加到命令行:
--template "{file}({line}): {severity} ({id}): {message}"
This will produce output something like this:
这将产生如下输出:
s:\src\jpeg.cpp(123): error (bufferAccessOutOfBounds): Buffer access out-of-bounds: abRY
Which you can then suppress by adding the line:
然后您可以通过添加以下行来抑制它:
// cppcheck-suppress bufferAccessOutOfBounds
To the previous line in the source file.
到源文件中的上一行。
回答by mabraham
According to the cppcheck man page, you can use the --template
option to change the default output to include the id, e.g.
根据cppcheck 手册页,您可以使用该--template
选项更改默认输出以包含 id,例如
cppcheck /the/src/file --template='{file}:{line},{severity},{id},{message}'
回答by Sara Wolfie
If you're using the GUI, you can right click on the message that you want to suppress to pop up a menu. Select "Copy message id". Paste the message id into your code in place of "suppressed_error_id".
如果您使用的是 GUI,则可以右键单击要取消显示的消息以弹出菜单。选择“复制消息 ID”。将消息 ID 粘贴到您的代码中以代替“suppressed_error_id”。