整数溢出逻辑分析

时间:2018-08-29 08:12:49

标签: java integer-overflow klocwork

我有以下代码行,并且在我的项目上运行klocwork分析时出现以下错误

SV.INT_OVF:来自'br.readLine()'的污染数据'Long.parseLong(...)'用于算术运算,会导致整数溢出或意外结果

我的代码

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

如何重构此代码以避免可能的溢出

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用BigInteger来避免溢出。

是否应该是另一个问题。

我将查看这些值的合理范围,然后首先验证您的输入。最广泛的理智值很可能不会产生溢出(或者如果溢出,则必须使用BigInteger)