提问人:Nikeau 提问时间:6/29/2023 最后编辑:Nikeau 更新时间:6/29/2023 访问量:55
cppcheck 解析后缺少大量作用域类型
Missing lots of scope types after cppcheck parsing
问:
我们最近开始使用 Cppcheck,除了示波器之外,一切都运行良好。
我可能误解了某些东西,但是解析后生成的 .dump 文件中不应该有单独的枚举、结构、联合等范围吗?
我本来以为会有基于 cppcheck 文档(“ScopeType”枚举)和misra_8_12规则。
头文件解析为示例:
enum week {
LOW = 1,
MEDIUM,
HIGH
};
void testfct(void)
{
enum week day;
}
因此,我得到的唯一作用域是 testfct 函数的“全局”作用域和“函数”作用域。我不应该也得到一个“周”枚举的范围吗?
我的上下文python脚本(cfg是解析后获得的每个文件配置):
for scope in cfg.scopes:
print(' Id:' + scope.Id)
if scope.className:
print(' name:' + scope.className)
if scope.type:
print(' type:' + scope.type)
python 脚本在这里并不重要,因为范围甚至不在 .dump xml 结果文件中。
以及我们对 cppcheck 的调用(在 .bat 文件中):
cppcheck.exe --enable=all -j 4 --xml --dump <target_file>
答:
0赞
Nikeau
6/29/2023
#1
找到了解决方案。
事实证明,您需要一个 C 文件来包含定义“枚举”的标头。枚举、结构...在“.c”文件的结果 .dumb 文件中都可用,但在“.h”哑文件中不可用,这与两者中都可用的函数范围相反。我真的不明白这背后的逻辑,但是,它就在这里。
评论
{ }
};
enum class