私の方法は次のようになります。
public static void Debug(this Logger logger, string message)
{
logger.Debug(() => message);
}
デバッグ構成でコード分析を実行すると、警告が表示されません。
リリース構成でコード分析を実行すると、次のようになります。
CA1801 未使用のパラメーターを確認してください 'CommonExtensions.Debug(this Logger, string)' のパラメーター 'message' は使用されません。パラメータを削除するか、メソッド本体で使用してください。FakeItEasy CommonExtensions.cs 101
と
CA1801 未使用のパラメーターを確認してください 'CommonExtensions.Debug(this Logger, string)' のパラメーター 'logger' は使用されません。パラメータを削除するか、メソッド本体で使用してください。FakeItEasy CommonExtensions.cs 101
これは明らかに間違っています。メソッド本体で両方のパラメーターを使用しています。いずれかのパラメーターを削除すると、コードはコンパイルされません。
他の誰かが同様のことを経験しましたか? コード分析でバグを発見しましたか?
(両方の構成で同じルールセットを使用しています。)
アップデート
署名は次のLogger.Debug()
とおりです。
[Conditional("DEBUG")]
public abstract void Debug(Func<string> message);