我有以下的有60000一數目的乘積來分鐘轉換成毫秒的代碼。我已經實現了溢出檢查,如下所示。我仍然在進行下面的代碼分析交戰。如何克服這個警告而不壓制它?溢出檢查不工作
警告:CA2233:更正在操作中的潛在溢出 'sessionExpiryValueInMinutes * 60' 'ApplicationSessionDAL.IsSessionExpired(短)'
注:TimeSpan.TotalMilliseconds Property是double
數據類型
代碼
public void IsSessionExpired(Int16 sessionExpiryValueInMinutes)
{
if (sessionExpiryValueInMinutes > (double.MaxValue)/60000)
{
//Overflow check
throw new ArgumentOutOfRangeException("sessionExpiryValueInMinutes");
}
else
{
//int milliSecondsValue = sessionExpiryValueInMinutes * 60 * 1000;
DateTime lastAccessTime = new DateTime(2013, 1, 1);
TimeSpan elapsedTime = (DateTime.Now - lastAccessTime);
if (elapsedTime.TotalMilliseconds > (sessionExpiryValueInMinutes * 60 * 1000))
{
bool isTimeExpired = true;
}
}
}
個參考
的FxCop不能告訴你已檢查了溢出。它不是聰明的。 – Oded
@Oded某些時候它可以工作,例如,添加時。當我們指定範圍檢查時,它停止抱怨警告。我找 – Lijo
如果您要檢查Int16.MaxValue代替double.MaxValue這樣的解決方案? –