Не удается подавить предупреждение FxCop CA1062 - PullRequest
1 голос
/ 27 апреля 2011

C # /. NET / FxCop!

... в классе я хочу, чтобы FxCop заткнулся, жалуясь на

Warning CA1062 : Microsoft.Design : 
In externally visible method 'xyz', validate parameter 'a' before using it. 

По сути, это правило предполагает, что я ставлю if (a == null) throw new ArgumentNullException("a"); в начале почти каждого метода в моем коде. Это отстой и изменяет логику обработки исключений.

Итак, я поместил это куда-то в тело моего класса:

[SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods",
     Scope = "Type", 
     MessageId = "0", 
     Justification = "We love danger... so far.")]

В любом случае, это даже не подавляет ни одного сообщения - я все еще получаю все эти предупреждения. Оно подавляет предупреждение только в том случае, если оно стоит прямо над одним из определений ошибочных методов (т. Е. Оно подавляет только одно предупреждение, не все этого типа). Странно то, что тот же синтаксис работает для других проблем, которые встречаются в моем классе несколько раз.

Я не знаю, что я делаю неправильно, и, честно говоря, я действительно не понимаю, как использовать параметры атрибута. http://msdn.microsoft.com/de-de/library/ms244717.aspx не слишком вдавается в детали. : T ... в любом случае, есть идеи, что не так?

1 Ответ

4 голосов
/ 27 апреля 2011

Вы хотите подавить сообщение для всех классов или только для одного класса?Если первое, вы можете отключить правило.(Точный механизм для этого зависит от того, как вы используете FxCop, поэтому, пожалуйста, предоставьте подробную информацию, если вам нужна помощь в этом.)

Если последнее, вам потребуется добавить атрибут SuppressMessage дляпо крайней мере, каждый метод, в котором обнаружена проблема.Причина этого заключается в том, что FxCop ищет только подавления для цели нарушения.Подавление, добавленное к «родительскому» элементу (например, классу, к которому относится метод), никогда не проверяется FxCop при попытке определить, было ли нарушение подавлено.где вы размещаете подавление в вашем коде, если используете атрибут Target, но это не меняет необходимости в одном атрибуте подавления на цель нарушения.

...