Cppcheck 停止检查未使用的StructMember
Posted
技术标签:
【中文标题】Cppcheck 停止检查未使用的StructMember【英文标题】:Cppcheck stop checking unusedStructMember 【发布时间】:2021-04-27 03:38:38 【问题描述】:cppcheck版本:2.3
1.扫描以下代码(rsvd.c)
typedef struct
int a;
// cppcheck-suppress unusedStructMember
int b;
int c;
test;
int main()
test A;
A.a = 5;
return 0;
运行cppcheck --inline-suppr --enable=all rsvd.c
结果如下(如预期):
正在检查 rsvd.c ...
rsvd.c:7:9: style: struct member 'test::c' 从未使用过。 [未使用的结构成员]
int c;
rsvd.c:14:9: style: 变量“A.a”被分配了一个从未使用过的值。 [未读变量]
A.a = 5;
2.扫描以下二维码
typedef struct
int a;
int b;
int c;
test;
int main()
test A = 1, 2, 3;
return 0;
结果如下(非预期):
正在检查 rsvd.c ...
rsvd.c:3:9: style: struct member 'test::a' 从未使用过。 [未使用的结构成员]
int a;
rsvd.c:4:9: style: struct member 'test::b' 从未使用过。 [未使用的结构成员]
int b;
rsvd.c:5:9: style: struct member 'test::c' 从未使用过。 [未使用的结构成员]
int c;
rsvd.c:11:12: style: 变量“A”被赋予了一个从未使用过的值。 [未读变量]
测试 A = 1, 2, 3;
在前面的代码中,已为结构成员变量赋值。这是该工具的误报。我怎么解决这个问题?非常感谢。
【问题讨论】:
【参考方案1】:这是 Cppcheck 中的误报。我为这个问题提交了https://trac.cppcheck.net/ticket/10699。
不幸的是,大括号初始化器在所有情况下都没有得到很好的处理。这正在改进。
在某些情况下,当您切换到 (
/)
时,此类警告会消失,但您不应该这样做。
【讨论】:
以上是关于Cppcheck 停止检查未使用的StructMember的主要内容,如果未能解决你的问题,请参考以下文章