VS代码分析CA1062即使在空检查后也会触发

时间:2014-11-21 12:34:53

标签: visual-studio-2013 sitecore fxcop

我有一个Sitecore项目,我在其中使用visualstudio代码分析。我使用Sitecore方法“Assert.ArgumentNotNull”来检查空参数,但是visualstudio代码分析引擎无法识别它并显示“CA1062验证公共方法的参数”消息。

是否有更简单的方法告诉分析引擎“Assert.ArgumentNotNull”执行空检查并且消息无效。

我不想压制消息或禁用它。

1 个答案:

答案 0 :(得分:1)

你不能那样使用Sitecore的Assert类,这就是原因:

Sitecore Assert类以及NotNullAttributeCanBeNullAttribute是ReSharper在执行自己的分析时可以理解的方式。

Assert.ArgumentNotNull(object, string)方法的定义如下:

[AssertionMethod]
public static void ArgumentNotNull([CanBeNull] [AssertionCondition(AssertionConditionType.IS_NOT_NULL)] object argument, [CanBeNull] [InvokerParameterName] string argumentName)

所有这些属性都在Sitecore中定义,R#因为命名约定而理解它们。

不幸的是,VS代码分析还有另一种命名约定。 ArgumentNotNull对您来说应该是这样的:

public static void ArgumentNotNull([ValidatedNotNull] object argument, string argumentName)

由于您无法修改Assert课程,因此无法使用argument标记ValidatedNotNullAttribute参数。