c++ - CppCheck 规则不显示#define,注释
问题描述
我正在为 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
和后处理转储(例如通过 Python 脚本)创建 XML 转储。然后#define TEST 1
,您的示例行是rawtokens
anddirectivelist
部分的一部分。几个 Cppcheck 插件就是这样做的(例如 Python MISRA-C 插件)。请参阅 GitHub 上 Cppcheck 的“插件”目录。在这个目录中还有一个 Python 帮助脚本cppcheckdata.py
,它读取转储文件并为令牌、函数等创建对象列表。
推荐阅读
- c++ - 为什么我的归并排序最后放了一个随机的 4?
- c++ - 为什么我不能继续使用 std::cin 向同一个变量输入其他值?
- reactjs - 为导入的节点模块提供 React Context
- java - 当 JComboBox 项目更改时删除另一个 JComponent
- ruby-on-rails - 将数组移动到 Rails ActiveRecord 表中的方法
- javascript - 如何将所有页面添加到 cache.addAll
- python - 在括号之间找到一些东西
- sas - do loop 和 multi-set 语句中的 on one set 语句有什么区别?
- java - 为什么插件中从未使用过onCommand
- python - 在我的购物网络应用中显示购物车状态