2010-03-29 3 views
0

В настоящее время FxCop сообщает об одном нарушении правила для конкретного метода - он имеет два параметра, потому что я хочу вернуть два значения вызывающему, не создавая для него структуру. Я задаюсь вопросом, разрешили бы анонимные типы моей проблемы, но я не знал о них в то время, когда я написал метод.Предотвращение множественного сообщения о том же нарушении правил в FxCop - Что такое идентификатор?

Во всяком случае, я получаю CheckId CA1021 один раз для каждого параметра. Я скопировал текст SuppressMessage из FxCop, а затем понял, что идентификатор для каждого сообщения отличается! Мне кажется, вам нужен только CheckId, поэтому ...

  1. для чего используется идентификатор? Я не смог найти информацию об этом в Интернете.
  2. Идентификатор останется прежним? Я так полагаю, или SuppressMessage не будет работать так, как хотелось бы
  3. Есть ли способ указать атрибут SuppressMessage, чтобы он подавлял для все Идентификаторы?
+0

У меня нет ответа на ваш вопрос FxCop, но вы не можете возвращать анонимные типы из метода, не делая какого-либо обмана. – richeym

+0

ОК, спасибо за ответ! – Dave

ответ

1

От In Source Suppression Overview

Атрибуты могут быть применены только к способу и не могут быть встроены внутри тела метода. Однако вы можете указать идентификатор в качестве идентификатора сообщения, чтобы различать несколько случаев нарушения в методе.

Иными словами: MessageId используется для подавления одного экземпляра ошибки в пределах области; это удобно, если вы беспокоитесь о том, чтобы случайно ввести ошибку снова в рамках того же метода и хотите поймать это новое введение с помощью FxCop (или если вы хотите указать различные обоснования для каждого случая проблемы). Если вы не боитесь вводить больше этих ошибок (или вас не волнует, если вы это сделаете), и имеете такое же обоснование, вы можете просто оставить сообщение Message в инструкции Suppress: [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters")].