我的代码如下:
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代码库中找到这种隐式转换的所有实例,以避免无意中导致这种错误?
答案 0 :(得分:2)
Google的代码分析器Error Prone有缩小复合分配的规则:https://github.com/google/error-prone/blob/master/docs/bugpattern/NarrowingCompoundAssignment.md