代码检查:Math.Abs() 参数始终为非负数
此检查报告了 Math.Abs() 的使用,这些使用可能是多余的,因为它们的参数为非负数。
Math.Abs() 的目的是将可能为负数的数字转换为其非负等价物。 因此,如果已知参数为非负数,您可以安全地用参数的值替换 Math.Abs() 调用。
为了确定变量或参数的值始终为非负数,JetBrains Rider 依赖于 整数算术分析 ,该分析默认启用。
在下面的示例中,所有三处 Math.Abs() 的使用都会被报告,因为:
p1被标记为来自 JetBrains.Annotations的[NonNegativeValue]属性,该属性添加了相应的契约,p2的类型为uint,该类型只能包含非负值,p3为非负数,因为它在源代码中被明确检查过。
public void Test([NonNegativeValue] int p1, uint p2, int p3)
{
Console.WriteLine("Abs 1:" + Math.Abs(p1));
Console.WriteLine("Abs 2:" + Math.Abs(p2));
if (p3 < 0) return;
Console.WriteLine("Abs 1:" + Math.Abs(p3));
}
最后修改日期: 2025年 9月 26日