Вопрос

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 ... в любом случае, какие идеи, что не так?

Это было полезно?

Решение

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

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

У вас есть некоторая гибкость в отношении того, где вы размещаете подавление в свой код, если вы используете целевой атрибут, но это не меняет необходимость одного атрибута подавления на цель нарушения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top