可疑整数除法的检查样式规则?



是否有一个检查样式规则可以捕获以下内容:

double result = someInt / someOtherInt;

result是双倍的(所以显然需要分数(,但右侧会进行整数除法(向下舍入(。

这样的东西存在吗?

不可以,但 findbug 可以:

ICAST:积分除法结果转换为双倍或浮点数(ICAST_IDIV_CAST_TO_DOUBLE(

此代码将积分除法(例如,int 或长除法(运算的结果转换为双精度或浮点数。对整数执行除法会将结果截断为最接近零的整数值。结果被投射到两倍的事实表明,应该保留这种精度。可能的意思是在执行除法之前将一个或两个操作数转换为双倍。

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

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

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

最新更新