【问题标题】:VS codeanalysis CA1062 fires even after null checkVS代码分析CA1062即使在空检查后也会触发
【发布时间】:2014-11-21 12:34:53
【问题描述】:

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

除了创建自定义规则,有没有更简单的方法告诉分析引擎“Assert.ArgumentNotNull”执行空检查并且消息无效。

我不想隐藏或禁用该消息。

【问题讨论】:

    标签: visual-studio-2013 sitecore fxcop


    【解决方案1】:

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

    Sitecore Assert 类以及 NotNullAttribute 和 CanBeNullAttribute 是 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类,所以不能用ValidatedNotNullAttribute标记argument参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多