用于捕获块记录的自定义检查模式

时间:2013-05-09 12:59:51

标签: c# resharper

我刚刚下载了Resharper 7.1的试用版。我的目标是强制执行一个规则,我们的自定义记录器必须用在我们的c#代码库中的所有catch块上。实施例;

try{
    // Any amount of code
}
catch(Exception e){

}

应该是非法的,但是:

try{
    // Any amount of code
}
catch(Exception e){
    Logger.LogException(e.Message, e);
}

完全可以接受。为此,我设置了以下模式来检测和重新分解。

搜索模式:

try{
    $anystatements$
}
catch($exceptiontype$ $exceptionarg$){
    $anycatchstatements$
}

替换模式:

try{
    $anystatements$
}
catch($exceptiontype$ $exceptionarg$){
    Logger.LogException($exceptionarg$.Message, $exceptionarg$)
    $anycatchstatements$
}

Resharper检测到气味很好,但是将替换模式本身视为一种气味,因为记录的添加行与$anycatchstatement$占位符相匹配。

如何定义一个占位符来描述“匹配catch块中任何数量的语句,这些语句不是对自定义记录器的调用,只需将调用附加到记录器”?

1 个答案:

答案 0 :(得分:1)

不幸的是,我正在使用Resharper 8 EAP(http://confluence.jetbrains.com/display/ReSharper/ReSharper+8+EAP),但仍然没有这样的选择。

值得一提的是,您应该查看代码合同,或http://www.postsharp.net/或类似内容。

Vladimir Reshetnikov也是对的 - 他们的团队可以为你提供很多帮助。您可以通过电子邮件或网络表单轻松与他们联系。他们拥有非常好的开发人员,公司允许与客户直接沟通。他们来自俄罗斯:)