【发布时间】:2013-03-03 17:44:15
【问题描述】:
我有以下字符串的扩展方法:
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
【问题讨论】:
-
哪里违规了?在扩展方法中?在调用 to 扩展方法?还是在它之后?每当您在问题中提及错误/警告时,请说明它发生的位置。
-
看IL代码,代码分析不会对你在你的IDE中看到的代码进行操作,所以也许这会有所帮助。
-
您可以使用
ValidatedNotNullAttribute让 FxCop 知道。更多信息:esmithy.net/2011/03/15/suppressing-ca1062
标签: c# .net visual-studio-2012 code-analysis fxcop