1

私がこれから尋ねようとしていることは不可能だと確信していますが、コード分析の専門家が回避策を提案できることを期待しています。

GlobalSuppressions.cs機能に基づいてコード分析の警告を除外する方法を見つけようとしています。たとえば、無効にしたい

"Microsoft.Globalization", "CA1305:SpecifyIFormatProvider"

私のロギングステートメントの****すべて****(私はCommonLoggingファサードを使用しています)であるため、署名は次のようになります。

Common.Logging.ILog.Trace(System.Action<Common.Logging.FormatMessageHandler>)

タイプ、名前空間、メソッド名に関係なく、プロジェクト全体でこれを実行したいと思います。

他の 答えを見ると、これは今のところ不可能のようです...それともそうですか?

4

1 に答える 1

0

これは確かに不可能です。string受け入れるオーバーロードと受け入れるオーバーロードの両方を持つメソッドを呼び出すとstring, IFormatProvider、このルールがトリガーされます。そして、おそらく、CultureSensitiveまたはCultureInsensitiveのログファイルが必要になると思います。その場合、コード分析はあなたにその選択を強いる。

あなたができることは、あなた自身のルールを書いて、これを無効にすることです。または、違反を修正して邪魔にならないようにすることもできます。簡単な正規表現の検索と置換により、おそらく数秒でこれらを修正できます。

または、コードとCommon.Loggingのコードの間でプロキシ/ファサードとして機能し、stringバリアントのみを受け入れる1つのクラスを作成できます。その後、コードをリファクタリングしてメソッドを使用できます。そうすれば、新しく作成されたファサードに残る1つの違反を修正するだけで済みます。

于 2013-01-11T23:03:51.277 に答える