Получить 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
, но это, к сожалению, не меняет того, что на самом деле представляет...
Также смотрите этот ответ.