Заставить 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")]
11
задан DavidRR 25 October 2018 в 12:08
поделиться

1 ответ

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

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

@Matt Faus : В чем же тогда смысл аргумента Scope ?

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

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

10
ответ дан 3 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: