例如:
long long a = ....;
int b;
b = (int) a;
是否存在gcc标志或Sonarqube之类的静态分析工具可以检测到这种情况?
搜索显式类型转换是一项奇怪的任务。开发人员显然意味着他想使用显式类型转换“截断”高位。但是,我敢说这个任务实际上是不同的:必须将32位应用程序移植到64位平台上。在这种情况下,是的,检测危险的显式类型转换是非常相关的任务。如果是这样,那就有解决方案。在PVS-Studio分析仪中有一组与端口相关的特殊诊断。例子:
您还可以尝试使用Clang作为C / C ++解析器的CppDepend,Clang会检测到此类问题。