11

型全体の FxCop 警告を抑制するにはどうすればよいですか?

namespace ConsoleApplication1
{     
    public static class Serializer<T>
    {
        public static string Serialize(T obj)
        {
            return string.Empty;
        }

        public static T Deserialize(string str)
        {
            return default(T);
        }
    }

私はこれを試しましたが、うまくいきません:

[assembly: SuppressMessage("Microsoft.Design",
    "CA1000:DoNotDeclareStaticMembersOnGenericTypes", Scope = "Type",
    Target = "ConsoleApplication1.Serializer'1")]
4

1 に答える 1

11

残念ながら、これは機能しません。FxCopは、検出された違反と同じターゲットに対して宣言された抑制のみを処理します。Serializeメソッドで違反が見つかった場合、SuppressMessageその違反を「隠す」属性は、メソッド自体で宣言された属性か、Targetプロパティがメソッドを識別する属性のいずれかだけです。

クラス内の静的メソッドごとにCA1000違反を抑制したい場合は、それらのメソッドごとに属性をSerializer<T>作成してこれを行う必要があります。SuppressMessage

@マットファウスScope:それでは、議論のポイントは何ですか?

Scope引数により、FxCopは引数がどのようなものを表すかを知ることができますTarget。たとえば、がの場合、それTargetは名前空間という名前空間または名前空間で指定されたクラス"A.B.C"を参照しますか?おそらくのような名前にする必要がありますが、残念ながら、それが実際に表すものを変更することはありません...A.B.CCA.BScopeTargetKind

この回答も参照してください。

于 2010-07-15T23:03:23.907 に答える