C++ 在不定义所有宏的情况下使用cppcheck
我在使用boost库的项目上使用cppcheck。这个库中的头包含大量宏,我甚至没有在我的源代码中使用这些宏。尽管如此,cppcheck仍然依赖于这些我认为无用的宏来探索路径。有没有一种方法可以告诉cppcheck忽略所有宏,除非它是在源代码中使用#define?定义的,这不完全是您想要的,但是您可以将C++ 在不定义所有宏的情况下使用cppcheck,c++,cppcheck,C++,Cppcheck,我在使用boost库的项目上使用cppcheck。这个库中的头包含大量宏,我甚至没有在我的源代码中使用这些宏。尽管如此,cppcheck仍然依赖于这些我认为无用的宏来探索路径。有没有一种方法可以告诉cppcheck忽略所有宏,除非它是在源代码中使用#define?定义的,这不完全是您想要的,但是您可以将define指定给cppcheck,以便它只计算一个分支: 请参见-D/-U选项。以下是cppcheck文档中的必要部分: -D<ID> Define pr
define
指定给cppcheck,以便它只计算一个分支:
请参见
-D
/-U
选项。以下是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'
及
--最大配置=
要签入文件的最大配置数
在跳过它之前。默认值为“12”。如果一起使用
对于“-force”,最后一个选项是
有效。
这意味着:
cppcheck --force <PATH_TO_YOUR_CODE>
cppcheck——强制
Cppcheck验证预处理器路径的所有组合,这可能导致在大型代码库上的检查时间过长
可以找到相应的文档。一个选项是将此注释放在有问题的行上方,忽略缺少宏的行:
// cppcheck-suppress unknownMacro
因此,如果我有10个宏,并且我定义了其中3个宏(在编译时或在我的源代码中),我是否需要取消定义其他7个宏?@Brahim:如果您有类似于
#ifdef UNSET_MACRO1
,是的,以避免检查两个路径。
cppcheck --force <PATH_TO_YOUR_CODE>
// cppcheck-suppress unknownMacro