【发布时间】:2018-02-10 07:30:38
【问题描述】:
SonarQube 为什么抱怨这部分代码?
我检查了这段代码,但这个值并不总是正确的。
public static void WriteJson(object value)
{
decimal decimalValue = ((decimal?)value).Value;
int intValue = (int)decimalValue;
if (decimalValue == intValue)
Console.WriteLine(intValue);
else
Console.WriteLine(decimalValue);
Console.ReadKey();
}
SonarQube 为什么抱怨这个?
【问题讨论】:
-
除非 SonarQube 有一根魔杖知道你将在运行时传入什么,否则这是错误的。而且我不喜欢欺骗你的工具,尤其是当它们建议重构会破坏代码时。
-
疯狂猜测:SonarQube 看到decimalValue 转换为int 并返回到decimal,因此它假设(错误地)该值(
(decimal)intValue)是原始的decimalValue - 这意味着条件是总是正确的。如果它是演员而不是转换,那将是正确的。