我有以下字符串的扩展方法:
public static bool IsNullOrEmpty(this string target)
{
return string.IsNullOrEmpty(target);
}
...而且在代码中我将其用于如下:
public static string DoSomethingOnString(this string target)
{
if (target.IsNullOrEmpty())
return target;
target = target.Trim(); //This line causes CA1062 violation
return target;
}
现在,如果我对此运行代码分析,我会得到CA1062规则的违反。但是,如果我将代码更改为:
public static string DoSomethingOnString(this string target)
{
if (string.IsNullOrEmpty(target)) //CHANGED LINE
return target;
target = target.Trim(); //This line DOES NOT cause CA1062 violation anymore
return target;
}
...然后就可以了。
为什么它认为我在第一个示例中没有检查null条件?它只检查string.IsNullOrEmpty或string.IsNullOrWhiteSpace吗?有没有办法让CA识别我的扩展方法,还是我需要禁用这个规则?
更新: 如果您遇到了相同的问题,您可以在MS Connect上投票反馈项: Code Analysis rule CA1062 raises false alarm
ValidatedNotNullAttribute
让 FxCop 知道。更多信息请参见:http://esmithy.net/2011/03/15/suppressing-ca1062/ - Alex M