Правила фильтрации на основе функциональности
Я почти уверен, что то, о чем я собираюсь спросить, невозможно, но я надеюсь, что эксперты по анализу кода смогут предложить обходной путь.
Я пытаюсь найти способ исключить предупреждение анализа кода в 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
вариант. Затем вы можете рефакторинг вашего кода для использования вашего метода. Таким образом, вам нужно исправить только одно нарушение, которое останется во вновь созданном фасаде.