我刚刚下载了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块中任何数量的语句,这些语句不是对自定义记录器的调用,只需将调用附加到记录器”?
答案 0 :(得分:1)
不幸的是,我正在使用Resharper 8 EAP(http://confluence.jetbrains.com/display/ReSharper/ReSharper+8+EAP),但仍然没有这样的选择。
值得一提的是,您应该查看代码合同,或http://www.postsharp.net/或类似内容。
Vladimir Reshetnikov也是对的 - 他们的团队可以为你提供很多帮助。您可以通过电子邮件或网络表单轻松与他们联系。他们拥有非常好的开发人员,公司允许与客户直接沟通。他们来自俄罗斯:)