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

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

Как мне этого добиться? Я играл с 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)]

3 ответа

Решение

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

Теперь это возможно для Visual Studio 2019

namespaceanddescendants

Scope = "namespaceanddescendants"

Для этого вы можете использовать область видимости "модуль", которая поддерживается более старыми компиляторами, чем те, которые поддерживают более новую область видимости "пространство имен и потомки". Объем модуля влияет на все в проекте и не требует целевой спецификации.

Пример использования:

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

Мне удалось проигнорировать это конкретное предупреждение специально для тестовых проектов (я следую соглашению об именах, в котором они всегда заканчиваются на "Tests.cs"), используя файл.editorconfig, содержащий следующее правило:

[*Tests.cs]
dotnet_diagnostics.CA1707.severity = none

Подробнее о моем ответе здесь

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

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

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

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

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

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

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

SuppressMessage на уровне модуля

Другие вопросы по тегам