Получение правила StyleCop SA1503 CurlyBracketsMustNotBeOmitted для большей гибкости - PullRequest
5 голосов
/ 09 июня 2009

У меня проблемы с правилом StyleCop SA1503 (CurlyBracketsMustNotBeOmitted).

В моем коде у меня довольно часто есть шаблон:

public void SomeFunction(string someArg)
{
    if (string.IsNullOrEmpty(someArg)) throw new ArgumentNullException("someArg");

    // rest of the function here
}

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

Однако, я бы никогда не написал бы

if (someConditional)
    DoSomeStuff();

Я бы всегда писал

if (someConditional)
{
    DoSomeStuff();
}

Итак, в итоге:

  • Используйте фигурные скобки, если оператор if разбит на несколько строк
  • Не используйте фигурные скобки для простой проверки аргументов и т. Д., Которые можно легко (и читабельно) поместить в одну строку

Может ли StyleCop помочь мне здесь?

Ответы [ 2 ]

7 голосов
/ 12 июня 2009

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

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

3 голосов
/ 09 июня 2009

StyleCop (и я согласен здесь) хочет, чтобы вы разбили это на несколько строк. Ему не нравятся операторы if в одной строке по (возможно) веской причине - это вызывает противоречивый шаблон использования операторов if, что является одной из причин того, что правило существует в первую очередь.

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

...