考虑以下代码
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]属性覆盖了这个方法,而没有为每个方法添加手动异常?
戴夫
答案 0 :(得分:1)
使用PostSharp和FxCop有一个简短的documentation article。它描述了PostSharp实际上修改了构建过程,以确保在由PostSharp(在obj\...\Before-PostSharp
文件夹中)增强之前对程序集执行代码分析。
这是必需的,因为PostSharp处理的程序集可能会导致FxCop生成太多不相关的警告。
正确的解决方案是禁用原始FxCop验证规则,并将其替换为知道PostSharp验证方面的自定义规则。目前,PostSharp不提供此自定义规则。