我有一段代码cccheck
告诉我Requires()
未经证实,我应该添加!string.IsNullOrWhitespace(...)
。我已经检查了这个条件,因为我调用了自己的扩展方法,这个方法是我在.Net 3.5时写的:
public static bool IsEmpty(this string s)
{
if (s == null) return true;
if (s.Length == 0) return true;
for (int i = 0; i < s.Length; i++)
if (!char.IsWhitespace(s[i]))
return false;
return true;
}
public static bool IsNotEmpty(this string s)
{
return !IsEmpty(s);
}
我的代码已要求value
为IsNotEmpty
:
Contract.Requires(value.IsNotEmpty(), "The parameter 'value' cannot be null or empty.");
我如何告诉cccheck
(以及代码合同框架的其余部分)IsNotEmpty()
已经检查!string.IsNullOrWhitespace(...)
?
答案 0 :(得分:3)
尝试Contract.Ensures(Contract.Result() == !string.IsNullOrWhitespace(s))
编辑:
是的,我意识到这会导致“确保未经证实”,当我发布它时,我希望找到一些时间来更彻底地回答。一种(有点微不足道)修复它的方法,如果你可以抛弃你的旧代码:
public static bool IsEmpty(this string s)
{
Contract.Ensures(Contract.Result() == string.IsNullOrWhitespace(s))
return string.IsNullOrWhitespace(s);
}
public static bool IsNotEmpty(this string s)
{
Contract.Ensures(Contract.Result() == !string.IsNullOrWhitespace(s))
return !string.IsNullOrWhitespace(s);
}