我有一个流利的,可扩展的验证助手,如:
Assert.That(aParameter).IsNotNull();
它是可扩展的,因为该方法实际上是通用的(即< T>)并且使用隐式类型来返回通用IAssertCondition< T>宾语。 IsNotNull实际上是一种扩展方法。
无论如何,使用这种方法验证传递给方法的参数的问题是我得到CA1062警告,指示我在使用之前验证参数,当然,我已经在做了。
我阅读了Eric Smith的帖子(here)关于使用ValidatedNotNullAttribute来告知FxCop该参数是否正在验证但是我没有看到我如何使用我所描述的流畅接口来实现这一点。
我的选择是什么,以便代码分析能够认识到上述陈述符合要求并且警告不会出现?
答案 0 :(得分:4)
在这种情况下,您可以添加属性的唯一位置是That<T>
方法的参数。不幸的是,虽然这会阻止CA1062触发,但它可能会导致漏报,因为您需要调用的不仅仅是That<T>
来实际执行“非空”验证。如果您希望使用代码分析以识别验证助手的方式正确检查参数验证,那么您几乎必须编写自己的规则来替换CA1062。