捕获块日志记录的自定义检查模式

本文关键字:自定义 检查 模式 记录 日志 | 更新日期: 2023-09-27 18:12:45

我刚刚下载了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$占位符匹配。

我如何定义一个占位符来描述"匹配捕获块中任意数量的语句,这些语句不是对自定义记录器的调用,只是附加对记录器的调用"?

捕获块日志记录的自定义检查模式

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

显然你应该看看代码契约,或http://www.postsharp.net/或类似的东西。

Vladimir Reshetnikov是对的,他们的团队可以帮助你很多。你可以很容易地通过电子邮件或网络形式与他们联系。他们拥有非常优秀的开发人员,公司允许与客户直接交流。他们来自俄罗斯:)