Подтвердить что ты не робот

'SuppressMessage' для всего пространства имен

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

Как мне этого добиться? Я играл с GlobalSuppressions.cs но ничего не GlobalSuppressions.cs:

[module: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Scope = "namespace", Target = "Company.Product.Tests")]

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Scope = "namespace", Target = "Company.Product.Tests")]
4b9b3361

Ответ 1

Я думаю, что это невозможно, поскольку harlam357 уже сказал.

Ответ 2

Начиная с Visual Studio 2019 возможно подавление предупреждения анализа кода для пространства имен и всех его дочерних символов:

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Justification = "Test methods require underscores for readability."
    Scope = "namespaceanddescendants", Target = "Company.Product.Tests")]

Область действия - цель, для которой предупреждение подавляется. Если цель не указана, она устанавливается в качестве цели атрибута. Поддерживаемые области включают следующее:

  • ...

  • namespaceanddescendants - (Новое в Visual Studio 2019) Эта область подавляет предупреждения в пространстве имен и во всех его дочерних символах. Значение namespaceanddescendants действительно только для анализаторов Roslyn и игнорируется двоичным статическим анализом на основе FxCop.

Подавить предупреждения анализа кода # Атрибут SuppressMessage @MS Docs

Ответ 3

Да, это невозможно с FxCop <= 10.0.

Что вы можете сделать, это отключить CA1707 с помощью файла настраиваемых правил (возможно, только для ваших тестовых проектов).

Ответ 4

Как уже говорилось, это невозможно из коробки. Imho, он предназначен, потому что подавление должно выполняться унитарно.

Существует обходное решение для этого вручную с помощью FXCop 10 с функциональностью Copy As > Module-level SuppressMessage.

Минусы, вам придется повторять это каждый раз, когда пространство имен будет изменено, но, как уже было сказано, глобальные запреты должны быть изолированы.

  • Откройте сборку в FXCop 10 (System.Xml здесь) и выполните анализ
  • Выберите ваше пространство имен (здесь System.Xml)
  • Выберите все нарушенные правила.
  • Щелкните правой кнопкой мыши и Copy As > Module-level SupressMessage
  • Затем вставьте его в GlobalSuppressions.cs, например

Примечание. Это можно сделать при сборке, пространстве имен или уровне.

Module-level SuppressMessage