Могу ли я подавить нарушения анализа кода FX Cop в глобальном масштабе? - PullRequest
9 голосов
/ 16 сентября 2008

Когда вы используете анализ кода Visual Studio (FxCop) и хотите подавить сообщение, есть 3 варианта.

  1. Подавить нарушение в коде.
  2. Подавить нарушение в файле GlobalSupression.cs.
  3. Отключить проверку нарушения в файле проекта (через Проект -> Свойства -> Анализ кода).

Последнее очень сложно просмотреть при регистрации в Source Control, и трудно получить обзор всех отключенных нарушений. Поэтому мы хотели бы использовать вариант 2.

Проблема с вариантами 1 и 2 заключается в том, что вы получаете одну строку подавления за каждое нарушение. Например, как:

[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "Company.Project.Namespace2")]
[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "Company.Project.Namespace1")]

Мы бы хотели сделать что-то подобное в GlobalSuppressions.cs:

[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes")]

Но возможно ли это?

Ответы [ 2 ]

9 голосов
/ 16 сентября 2008

Подавление нескольких нарушений одним атрибутом SuppressMessage официально не поддерживается. Видимо, это по замыслу.

Я согласен, иногда это может раздражать, но я не могу сказать, что не согласен с этим решением, поскольку этот атрибут заставляет вас сказать: «Да, я знаю, что я делаю», что должно оцениваться в индивидуальном порядке.

1 голос
/ 21 сентября 2013

Я думаю, что все изменилось, так как этот вопрос был опубликован и ответил. Для Visual Studio 2010 и 2012 вы можете создать собственный файл «набора правил», в котором вы можете указать, какие правила анализа кода вы хотите подавить.

http://msdn.microsoft.com/en-us/library/dd380660.aspx

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

...