Получить FxCop для подавления предупреждений для всего типа?

Как я могу подавить предупреждения 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")]

1 ответ

Решение

К сожалению, это не сработает. FxCop обрабатывает только те подавления, которые объявлены для той же цели, что и обнаруженное нарушение. Если он обнаружит нарушение на вашем Serialize метод, единственный SuppressMessage Атрибуты, которые "скрывают" это нарушение, являются либо объявленными в самом методе, либо Target свойство идентифицирует метод.

Если вы хотите подавить нарушение CA1000 для каждого из ваших статических методов в Serializer<T> класс, вам нужно будет сделать это путем создания SuppressMessage атрибут для каждого из этих методов.

Matt Faus: в чем смысл Scope аргумент то?

Scope Аргумент позволяет FxCop знать, что за вещь Target аргумент представляет. Например, если Target является "A.B.C", это относится к пространству имен с именем A.B.C или класс с именем C в пространстве имен A.B? Scope вероятно, должно быть названо что-то вроде TargetKind, но это, к сожалению, не меняет того, что на самом деле представляет...

Также смотрите этот ответ.

Другие вопросы по тегам