Как я могу пометить CA [SuppressMessage] как "благословенный"? - PullRequest
1 голос
/ 30 сентября 2010

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

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

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

Ответы [ 2 ]

1 голос
/ 30 сентября 2010

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

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

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

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

0 голосов
/ 30 сентября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...