Resharper 8:使用 ContractAnnotationAttribute 作为验证方法
Resharper 8: Use ContractAnnotationAttribute for validation method
我有一个验证正则表达式的方法:
private string _value;
private void ValidateFormat(RegEx pattern)
{
if (!pattern.IsMatch(_value)
throw new Exception("...");
}
现在 ReSharper 将 pattern
参数标记为 "Parameter 'pattern' is only used for precondition check(s)"。
在互联网上搜索我找到了使用 ContractAnnotationAttribute 的解决方案(参见 here and here)。
但我仍然无法让它适用于这个特定案例。
感谢您的帮助!
我认为你不会在这里得到任何帮助。 ContractAnnotation
属性可用于将方法标记为 "assertion" 方法,这意味着该方法的重点是断言某些内容并在失败时抛出。这可以帮助分析,比如去掉前置条件检查,也可以告诉调用代码传递null会产生死代码等
不幸的是,您在此处检查的先决条件很复杂,无法在 ContractAnnotation
中建模。我的建议是忽略 ReSharper 的警告,要么什么都不做,要么告诉 ReSharper 禁用那段代码的警告(alt+enter,用注释抑制)
我有一个验证正则表达式的方法:
private string _value;
private void ValidateFormat(RegEx pattern)
{
if (!pattern.IsMatch(_value)
throw new Exception("...");
}
现在 ReSharper 将 pattern
参数标记为 "Parameter 'pattern' is only used for precondition check(s)"。
在互联网上搜索我找到了使用 ContractAnnotationAttribute 的解决方案(参见 here and here)。
但我仍然无法让它适用于这个特定案例。
感谢您的帮助!
我认为你不会在这里得到任何帮助。 ContractAnnotation
属性可用于将方法标记为 "assertion" 方法,这意味着该方法的重点是断言某些内容并在失败时抛出。这可以帮助分析,比如去掉前置条件检查,也可以告诉调用代码传递null会产生死代码等
不幸的是,您在此处检查的先决条件很复杂,无法在 ContractAnnotation
中建模。我的建议是忽略 ReSharper 的警告,要么什么都不做,要么告诉 ReSharper 禁用那段代码的警告(alt+enter,用注释抑制)