【问题标题】:Checkstyle rule for suspicious integer division?可疑整数除法的检查样式规则?
【发布时间】:2019-10-05 18:30:28
【问题描述】:

是否有一个检查样式规则可以捕捉到这样的东西:

double result = someInt / someOtherInt;

result 是双精度数(显然需要分数),但右侧会进行整数除法(向下舍入)。

这样的东西存在吗?

【问题讨论】:

    标签: java checkstyle integer-division spotbugs


    【解决方案1】:

    不,但是findbugs can

    ICAST:整数除法结果转换为双精度或浮点数 (ICAST_IDIV_CAST_TO_DOUBLE)

    此代码将整数除法(例如,int 或 long 除法)运算的结果转换为 double 或 float。对整数进行除法会将结果截断为最接近零的整数值。结果被转换为 double 的事实表明应该保留这种精度。这可能意味着在执行除法之前将一个或两个操作数转换为 double。

    【讨论】:

      【解决方案2】:

      目前在 Checkstyle 中没有这样的东西。

      您始终可以创建自己的检查,但跟踪变量可能并不容易。见https://checkstyle.org/writingchecks.html

      此外,Checkstyle 不是类型识别工具。在某些情况下,可能无法知道变量/字段的实际类型。见https://checkstyle.org/writingchecks.html#Limitations

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 2012-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多