2010-09-30 2 views
1

Попробуйте, как я мог бы сохранить [SuppressMessage] s до минимума в кодовой базе, новые продолжают поступать. Я хотел бы как-то сказать в коде «Я просмотрел этот [SuppressMessage], и ​​это« приемлемо ».Как я могу пометить CA [SuppressMessage] как «благословенный»?

Одна мысль заключалась в том, чтобы создать свой собственный класс My.CodeAnalysis.SuppressMessageAttribute, который наследует от System.Diagnostics.CodeAnalysis.SuppressMessageAttribute, но этот класс запечатан.

Я уверен, что я мог бы сколотить что-то с комментарием вблизи атрибута и шаг постобработки, но я хотел бы придерживаться того, что доступно «в поле» с Visual Studio 2010.

ответ

1

Даже если атрибут не был запечатан, подход подкласса не будет работать, поскольку экраны механизма анализа кода для точных экземпляров SuppressMessageAttribute. Поскольку текущие версии написаны, движок полностью игнорирует экземпляры подкласса.

Лично я использую следующий подход к управлению подавлений:

  1. Все «постоянные» сдерживание должны иметь свойство Обоснования, что объясняет причину подавления .
  2. По возможности, постоянные подавления должны быть размещены в файле целевого кода . В противном случае они должны быть расположены в верхней части файла GlobalSuppressions .
  3. Временные сдерживание все должны быть размещены ниже «Временные умолчаний» заголовок комментария в файле GlobalSuppressions, и они не должны быть назначены обоснования.
  4. Все постоянные помехи подлежат пересмотру кода в точности так же, как и сам код. Я использую обнаружение разницы для флага код для обзора, поэтому я могу видеть, какие подавлены, или изменен так же легко, как я могу видеть , код которого был изменен.
  5. Временные запреты должны быть удалены с помощью заранее определенной фазы проекта. После того, как эта точка прошла, включено правило, которое обнаруживает отсутствующие свойства выравнивания.

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

0

Когда вы щелкните правой кнопкой мыши по предупреждению CA в списке ошибок, одна из предложенных опций - Подавить сообщения (сообщения) -> В файле подавления проекта. При выборе этого, Visual Studio добавит строку подобную следующей в файл GlobalSuppressions.cs в проекте:

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Autofac")] 

Это позволяет им группироваться и из ваших файлов кода. Это то, что вы пытаетесь достичь?

+0

Я не хочу, чтобы много '[SuppressMessage] находилось где-нибудь в моей кодовой базе. Однако ваша идея использования атрибута [assembly:] может работать «благословить» определенные подавления. –

Смежные вопросы