Могу ли я подавить нарушения анализа кода FX Cop по всему миру?
-
09-06-2019 - |
Вопрос
Когда вы используете Visual Studio code analysic (FxCop) и хотите подавить сообщение, есть 3 варианта.
- Подавите нарушение в коде.
- Подавить нарушение в файле GlobalSupression.cs.
- Отключите проверку на нарушение в файле проекта (через Проект -> Свойства -> Анализ кода).
Более поздний вариант очень сложно просмотреть при регистрации в системе управления версиями, и трудно получить обзор всех отключенных нарушений.Итак, мы хотели бы использовать вариант 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")]
Но возможно ли это?
Решение
Подавление множественных нарушений с помощью одного Подавлять сообщение атрибут официально не поддерживается.По-видимому, это сделано специально.
Я согласен, иногда это может раздражать, но я не могу сказать, что не согласен с решением, поскольку атрибут - это их способ заставить вас сказать: "Да, я знаю, что я делаю", что должно оцениваться в каждом конкретном случае.
Другие советы
Я думаю, что все изменилось с тех пор, как был опубликован этот вопрос и дан ответ на него.Для Visual Studio 2010 и 2012 вы можете создать пользовательский файл "набора правил", в котором вы можете указать, какие правила анализа кода вы хотите подавить.
http://msdn.microsoft.com/en-us/library/dd380660.aspx
Итак, что я сделал, так это создал единый пользовательский файл набора правил, который находится в папке верхнего уровня моей коллекции исходных текстов репозитория, и я ссылаюсь на этот файл в каждом проекте Visual Studio.Это означает, что у меня есть одно центральное место, где я могу подавлять правила анализа кода, которые я просто терпеть не могу.Но если я когда-нибудь передумаю или решу, что мне следует пересмотреть свои плохие привычки в программировании, я могу очень просто повторно включить правило и посмотреть, сколько сообщений об анализе кода я получу.