1

私の方法は次のようになります。

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);
4

2 に答える 2

1

Q の更新によるとLogger.Debug()Conditional属性が設定されており、これが原因です。

于 2013-04-20T10:36:55.420 に答える
1

"CODE_ANALYSIS"条件付き属性を追加することで修正できます。

[Conditional("DEBUG")]
[Conditional("CODE_ANALYSIS")]
public abstract void Debug(Func<string> message);

(私は同じ問題を抱えていて、解決策を見つけました。)

于 2015-08-11T14:37:05.597 に答える