Отключить Stylecop в одной строке кода (пространство имен)

У нас есть существующий продукт, в котором мы хотели бы реализовать использование StyleCop. Однако у нас есть одна проблема: все наши пространства имен начинаются с нижнего регистра (например, lowerCase.UpperCase.Etc.Etc.) и, конечно, приводит к тому, что правило SA1300 (элемент должен начинаться с буквы верхнего регистра) нарушается в каждом файле.

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

Нам нравится, когда правило включено в целом, но временно отключено в строке пространства имен. Пробовали с:

[module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.NamingRules", "SA1300:ElementMustBeginWithUpperCaseLetter", Justification = "Reviewed. Suppression is OK here.")]

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

Я бы хотел иметь что-нибудь вроде:

#pragma warning disable SA1300
namespace lowerCase.UpperCase.Etc
{
#pragma warning enable SA1300

Но SA1300, насколько я понимаю, не является таким предупреждением.

У кого-нибудь есть идеи, как решить эту проблему?

Заранее спасибо!


person J. Abrahamsson    schedule 19.09.2013    source источник


Ответы (2)


Есть обходной путь.

Можно написать так:

#region Generated Code
namespace lowerCase.UpperCase.Etc
{
#endregion

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

Однако есть одно замечание: все правила в регионе будут игнорироваться, поэтому убедитесь, что у вас есть только «нежелательное» правило, прежде чем устанавливать регион.

На самом деле это небольшой комментарий (даже не ответ) на другой вопрос: Отключить StyleCop для определенных строк

person J. Abrahamsson    schedule 19.09.2013

К сожалению, то, что вы хотите сделать, невозможно. Однако StyleCop + включает более гибкую версию правила именования, которая позволит вам указывать другие форматы для имен пространств имен, чем для других имен.

person Nicole Calinoiu    schedule 19.09.2013
comment
Что ж ... Вы в какой-то степени правы, но после некоторой удачи я, кажется, нашел обходной путь, основанный на комментарии к другому аналогичному вопросу. Разместили это как ответ здесь. Ура! :) - person J. Abrahamsson; 19.09.2013
comment
Разве вы не предпочли бы использовать настраиваемое правило вместо того, чтобы аннотировать каждое из ваших объявлений пространств имен таким образом? - person Nicole Calinoiu; 19.09.2013
comment
imo, StyleCop + испортил многие из обычных правил stylecop ... Как я уже упоминал, нам в любом случае нужно просмотреть все файлы, поэтому нетрудно установить обходной путь для региона. - person J. Abrahamsson; 23.09.2013