如何通过使用静态分析工具或编译器标志在C ++代码中检测“显式类型转换中潜在的精度损失”

问题描述 投票:0回答:1

例如:

    long long a = ....;
    int b;
    b = (int) a;

是否有gcc标志或Sonarqube这样的静态分析工具可以检测到这种情况?

c++ type-conversion static-analysis
1个回答
0
投票

搜索显式类型转换是一个奇怪的任务。开发人员显然意味着他想使用显式类型转换“截断”高位。但是,我敢说这个任务实际上是不同的:必须将32位应用程序移植到64位平台。在这种情况下,是的,检测危险的显式类型转换是非常相关的任务。如果是这样,那就有解决方案。在PVS-Studio分析仪中有一组与端口相关的特殊诊断。示例:

  • V202。从memsize类型显式转换为32位整数类型。
  • V220。类型转换的可疑序列:memsize-> 32位整数-> memsize。
  • V221。类型转换的可疑序列:指针-> memsize-> 32位整数。
  • others
© www.soinside.com 2019 - 2024. All rights reserved.