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

时间:2017-05-16 15:16:15

标签: c# validation code-analysis static-code-analysis

我想使用自定义助手来简化参数验证,就像这样。

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

但是,静态代码分析当然不知道我在使用这个帮助器时验证了公共方法中的输入,因此它给出了CA1062关于未经验证的公共方法参数的错误。 / p>

特定问题是this one

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

1 个答案:

答案 0 :(得分:1)

使用以下名称创建属性:

[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