Целочисленное переполнение klocwork анализ - PullRequest
0 голосов
/ 29 августа 2018

У меня есть следующие строки кода, и когда я запускаю klocwork analysis для моего проекта, я получаю следующую ошибку

SV.INT_OVF: испорченные данные Long.parseLong (...), полученные из br.readLine (), используются в арифметической операции и могут вызвать целочисленное переполнение или неожиданный результат

Мой код

 while (line = br.readLine() != null) {
     long timestamp = timescale * Long.parseLong(line.substring(1, line.length()));
 }

Как я могу реорганизовать этот код, чтобы избежать возможного переполнения

Спасибо

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете использовать BigInteger, чтобы избежать переполнения.

Должен ли ты - это другой вопрос.

Я бы посмотрел на то, что является нормальным диапазоном для этих значений, и сначала проверил бы ваши входные данные. Скорее всего, самый широкий диапазон нормальных значений не приведет к переполнению (или, если это произойдет, вы должны использовать BigInteger)

...