我有以下字符串的扩展方法:
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 上提交的反馈项目进行投票: 代码分析规则 CA1062 引发误报