CA1062& Postsharp必需属性

时间:2014-07-04 20:19:25

标签: c# fxcop postsharp

考虑以下代码

 public void AMethodWithAnotherRequiredArgument([Required] string aRequiredArgument)
    {
        Debug.WriteLine("You passed in a string with a length of {0}", aRequiredArgument.Length);
    }

它将触发CA1062(验证publicmethods的参数),这不是真正有效的,因为PostSharp正在执行验证,就像这个

一样
 public void AMethodWithARequiredArgument(string aRequiredArgument)
    {
        Throw.IfNullOrEmpty(aRequiredArgument, "aRequiredArgument");

        Debug.WriteLine("You passed in a string with a length of {0}", aRequiredArgument.Length);
    }

有效。

有什么方法可以让FXCop / SCA认识到我通过[Required]属性覆盖了这个方法,而没有为每个方法添加手动异常?

戴夫

1 个答案:

答案 0 :(得分:1)

使用PostSharp和FxCop有一个简短的documentation article。它描述了PostSharp实际上修改了构建过程,以确保在由PostSharp(在obj\...\Before-PostSharp文件夹中)增强之前对程序集执行代码分析。

这是必需的,因为PostSharp处理的程序集可能会导致FxCop生成太多不相关的警告。

正确的解决方案是禁用原始FxCop验证规则,并将其替换为知道PostSharp验证方面的自定义规则。目前,PostSharp不提供此自定义规则。