我正在为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行是rawtokensdirectivelist部分的一部分。
几个Cppcheck插件以这种方式执行此操作(例如Python MISRA-C插件)。请参阅GitHub上Cppcheck的“ addons”目录。在此目录中,还有一个Python帮助程序脚本cppcheckdata.py,该脚本读取转储文件并创建令牌,函数等的对象列表。

关于c++ - CppCheck规则未显示#define,注释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58409223/

10-12 15:01