Может ли модуль CheckStyle "NeedBraces" работать с вложенными блоками if / else? - PullRequest
3 голосов
/ 20 декабря 2008

Мы используем CheckStyle для обеспечения соблюдения наших стандартов стиля. Одним из правил стиля, которые мы решили включить, был модуль NeedBraces .

NeedBraces указывает, что каждый оператор типа блока (например, if, else, for) должен иметь открывающие и закрывающие фигурные скобки. Однако, насколько я могу судить, он работает не совсем корректно.

Этот пример вызовет ошибку CheckStyle.

    if (true)
    {
        System.out.println("20");   
    }
    else
        System.out.println("30");

Потому что в другом случае нет фигурных скобок. Однако следующий пример не может вызвать ошибку CheckStyle.

    if (true)
    {
        System.out.println("20");   
    }
    else
        if (true)
        {
            System.out.println("30");
        }

Это должно было произойти из-за отсутствия фигурных скобок в другом случае, но checkstyle пропускает его. После двойной проверки документации я не могу найти причину, почему это не работает правильно.

Итак ... Может ли модуль CheckStyle "NeedBraces" работать с вложенными блоками if / else? Есть идеи?


Ответ на этот вопрос напрашивается другой вопрос : есть ли правило помечать вышеуказанный нежелательный код как нарушение?

Ответы [ 2 ]

6 голосов
/ 20 декабря 2008

Я полагаю, что это делает исключение, потому что, хотя и странно отформатировано, у вас есть "else if". Это не должно заставлять вас ставить фигурные скобки вокруг «если» в этом случае, потому что вы получите «... else {if {...}}

Ваш код должен быть отформатирован:

if (true)
{
    System.out.println("20");   
}
else if (true)
{
    System.out.println("30");
}
1 голос
/ 20 декабря 2008

В первом примере, если вы попытаетесь добавить еще один оператор в свой блок else , вам нужно будет поставить фигурные скобки. С другой стороны, во втором примере вы добавите инструкцию в фигурную скобку. Я полагаю, что именно по этой причине CheckStyle показывает ошибку в первом, потому что он подвержен ошибкам. Существует вероятность того, что вы можете добавить оператор, не вставляя фигурные скобки, если вы действительно хотите это как часть else не снаружи.

...