我正在为cppCheck创建自定义规则。当我创建规则时,例如不允许在项目中使用#define。但是--rule =。+在我的测试项目中没有显示#define。
cppcheck是否有任何选项或标志在我的代码中显示#define?
我的规则文件:
<?xml version="1.0"?>
<rule version="1">
<pattern>#define</pattern>
</rule>
我的例子:
#define TEST 1
int main() {
int a = TEST;
return 0;
}
最佳答案
https://sourceforge.net/projects/cppcheck/files/Articles/中的文档writing-rules-2.pdf
指出:“ Cppcheck数据已进行预处理。没有注释,#define,#include等。”
或者,您可以使用cppcheck --dump yourfile.c
创建XML转储,然后对转储进行后处理,例如通过Python脚本。
然后,示例中的#define TEST 1
行是rawtokens
和directivelist
部分的一部分。
几个Cppcheck插件以这种方式执行此操作(例如Python MISRA-C插件)。请参阅GitHub上Cppcheck的“ addons”目录。在此目录中,还有一个Python帮助程序脚本cppcheckdata.py
,该脚本读取转储文件并创建令牌,函数等的对象列表。
关于c++ - CppCheck规则未显示#define,注释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58409223/