Найти целочисленные переполнения, вызванные непреднамеренным неявным сужающим преобразованием Java - PullRequest
0 голосов
/ 31 мая 2018

У меня есть код, который выглядит следующим образом:

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 голосов
/ 31 мая 2018

Анализатор кода Google Error Prone имеет правило для сужения составных назначений: https://github.com/google/error-prone/blob/master/docs/bugpattern/NarrowingCompoundAssignment.md

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...