我在使用boost库的项目中使用cppcheck。这个库中的标题包含大量的宏,我甚至没有在我的源代码中使用它。然而,cppcheck根据我认为无用的宏来探索路径。有没有办法告诉cppcheck忽略所有宏,除非它是使用#define在源代码中定义的?
答案 0 :(得分:4)
以下是cppcheck文档中的必要部分:
-D<ID> Define preprocessor symbol. Unless --max-configs or
--force is used, Cppcheck will only check the given
configuration when -D is used.
Example: '-DDEBUG=1 -D__cplusplus'.
-U<ID> Undefine preprocessor symbol. Use -U to explicitly
hide certain #ifdef <ID> code paths from checking.
Example: '-UDEBUG'
您可以使用这些选项定义(-D)或取消定义(-U)自定义预处理程序符号。
另一个可能有趣的选择是
-f, --force Force checking of all configurations in files. If used
together with '--max-configs=', the last option is the
one that is effective.
和
--max-configs=<limit>
Maximum number of configurations to check in a file
before skipping it. Default is '12'. If used together
with '--force', the last option is the one that is
effective.
这意味着以下内容:
cppcheck --force <PATH_TO_YOUR_CODE>
Cppcheck验证预处理器路径的所有组合,这可能导致大型代码库的长检查时间。
可以找到相应的文档here。
答案 1 :(得分:2)
不完全是你想要的,但你可以指定define
来cppcheck,所以它只评估一个分支:
请参阅-D
/ -U
选项。
答案 2 :(得分:0)
一种选择是通过将注释放在有问题的行上方来忽略缺少宏的行:
// cppcheck-suppress unknownMacro
答案 3 :(得分:0)
使用 --config-exclude= 排除包含无法管理的配置的目录。它只排除头文件。