Предотвращение множественных сообщений об одном и том же нарушении правил в FxCop - Что такое Id? - PullRequest
0 голосов
/ 30 марта 2010

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

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

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

1 Ответ

1 голос
/ 30 марта 2010

С В обзоре подавления источника

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

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

...