使用自定义参数验证帮助程序会中断代码分析



我想使用自定义助手来简化参数验证,如下所示。

public static void ThrowIfNull(this object value, string parameterName)
{
    if (value == null)
    {
        throw new ArgumentNullException(parameterName);
    }
}

但是,静态代码分析当然不知道我在使用此帮助程序时确实验证了公共方法中的输入,因此它给了我CA1062有关公共方法参数未验证的错误。

特别的问题是这个。

有没有办法告诉代码分析器此帮助程序处理参数 null 验证?这个问题的正确解决方案是什么?

使用以下名称创建属性:

[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 框架本身,例如此处。

最新更新