使用自定义参数验证助手中断代码分析
Using a custom argument validation helper breaks code analysis
我想使用自定义助手来简化参数验证,就像这样。
public static void ThrowIfNull(this object value, string parameterName)
{
if (value == null)
{
throw new ArgumentNullException(parameterName);
}
}
然而,静态代码分析当然不知道我在使用这个助手时确实验证了 public 方法中的输入,所以它给我 CA1062
关于 [=23= 的错误] 方法参数未被验证。
具体问题是 this one。
有没有办法教代码分析器这个助手处理参数空值验证?此问题的正确解决方案是什么?
使用以下名称创建属性:
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
public sealed class ValidatedNotNullAttribute : Attribute {}
然后将其应用于您正在验证的参数:
public static void ThrowIfNull([ValidatedNotNull] this object value, string parameterName)
{
if (value == null)
{
throw new ArgumentNullException(parameterName);
}
}
警告应该会消失。
你可以看到这个属性被很多库使用,包括.net框架本身,例如here。
我想使用自定义助手来简化参数验证,就像这样。
public static void ThrowIfNull(this object value, string parameterName)
{
if (value == null)
{
throw new ArgumentNullException(parameterName);
}
}
然而,静态代码分析当然不知道我在使用这个助手时确实验证了 public 方法中的输入,所以它给我 CA1062
关于 [=23= 的错误] 方法参数未被验证。
具体问题是 this one。
有没有办法教代码分析器这个助手处理参数空值验证?此问题的正确解决方案是什么?
使用以下名称创建属性:
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
public sealed class ValidatedNotNullAttribute : Attribute {}
然后将其应用于您正在验证的参数:
public static void ThrowIfNull([ValidatedNotNull] this object value, string parameterName)
{
if (value == null)
{
throw new ArgumentNullException(parameterName);
}
}
警告应该会消失。
你可以看到这个属性被很多库使用,包括.net框架本身,例如here。