查找由Java无意隐式缩小转换引起的整数溢出

时间:2018-05-31 02:43:45

标签: java implicit-conversion

我的代码如下:

public class Foo {
    public static void doStuff() {
        int x;
        /* snip */
        x += Bar.getY();
        /* snip */
    }
}

public class Bar {
    public static int getY() {
        /* snip */
    }
}

我需要更改Bar.getY()以返回long而不是int。由于Java使用+=进行隐式转换,doStuff将继续编译而不会出现错误或警告,但现在将包含整数溢出错误。有没有办法在Java代码库中找到这种隐式转换的所有实例,以避免无意中导致这种错误?

1 个答案:

答案 0 :(得分:2)

Google的代码分析器Error Prone有缩小复合分配的规则:https://github.com/google/error-prone/blob/master/docs/bugpattern/NarrowingCompoundAssignment.md