【发布时间】:2011-09-28 12:11:26
【问题描述】:
我有一个关于此诊断的好处的问题。 一位用户建议我们实现对所有显式类型的搜索 PVS-Studio 分析器中的 C 风格转换。 也就是说,检测这种结构的诊断:
int *x = (int *)y;
float a = float(b);
float c = (float)(d);
其目的是用更安全的方式替换所有这些转换 版本 - reinterpret_cast/static_cast/const_cast。在此过程中 通过这样的重构,代码中的一些缺陷很可能会被检测出来。
当然,这不是检测关键错误,如果我们 实施此诊断,它将位于 [客户的 特定请求]并默认禁用。
但我什至怀疑这种诊断的好处。所以我决定问 其他用户:是否有其他人需要此选项来搜索显式 C风格的类型转换?有人愿意表演这种吗 重构他们的代码?
【问题讨论】:
-
float a = float(b);不是 C 风格的演员表。此语法由 C++ 引入。 -
@Nawaz 但它的语义与 C 风格的演员表相同,因此也有同样的问题。
-
如果您的风格指南说“不要使用 C 风格的强制转换”,那么能够以自动化的方式强制执行它会很有用。要求分析没有此类警告可以实现这一点,因此对于任何想要避免它们的人来说都是有用的,即使他们没有重构。
标签: c++ c static-analysis