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 は問題なく匂いを検出していますが、Logging 用に追加された行が$anycatchstatement$
プレースホルダーによって照合されているため、置換パターン自体を匂いとして扱っています。
「カスタムロガーへの呼び出しではないキャッチブロック内の任意の数のステートメントに一致し、単にロガーへの呼び出しを追加する」と説明するプレースホルダーを定義するにはどうすればよいですか?