Правила фильтрации на основе функциональности

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

Я пытаюсь найти способ исключить предупреждение анализа кода в GlobalSuppressions.cs на основе функциональности. Например, я хотел бы отключить

"Microsoft.Globalization", "CA1305:SpecifyIFormatProvider"

в **** все **** моих операторов регистрации (я использую CommonLogging фасад), поэтому подпись будет выглядеть примерно так:

Common.Logging.ILog.Trace(System.Action<Common.Logging.FormatMessageHandler>)

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

Глядя на другие ответы, сейчас это кажется невозможным... Или это так?

1 ответ

Решение

Это действительно невозможно. Когда вы вызываете метод, который имеет как перегрузку, которая принимает string и тот, который принимает string, IFormatProvider, это правило сработает. И это, вероятно, следовало бы, так как я ожидаю, что вы либо хотите файлы с учетом культуры или с учетом культуры. В этом случае Code Analysis заставляет вас сделать этот выбор.

Что вы можете сделать, это написать свое собственное правило и отключить это. Или вы можете исправить нарушения и убрать их с дороги. Быстрый поиск по регулярному выражению + замена может исправить это за несколько секунд.

Или вы можете написать один класс, который действует как прокси / фасад между вашим кодом и кодом Common.Logging и который принимает только string вариант. Затем вы можете рефакторинг вашего кода для использования вашего метода. Таким образом, вам нужно исправить только одно нарушение, которое останется во вновь созданном фасаде.

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