# Checks for blocks

## EmptyBlock

#### Description

Checks for empty blocks.

#### Properties

name | description | type | default value
--- | --- | --- | ---
option | policy on block contents | block policy | stmt
tokens | blocks to check | subset of tokens LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF, LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT STATIC_INIT | all tokens

#### Examples

To configure the check:

    <module name="EmptyBlock"/>

To configure the check for the text policy and only catch blocks:

    <module name="EmptyBlock">
        <property name="option" value="text"/>
        <property name="tokens" value="LITERAL_CATCH"/>
    </module>

#### Package

com.puppycrawl.tools.checkstyle.checks.blocks

#### Parent Module

TreeWalker

## LeftCurly

#### Description

Checks for the placement of left curly braces ('{') for code blocks. The policy to verify is specified using property option. Policies eol and nlow take into account property maxLineLength.

#### Properties

name | description | type | default value
--- | --- | --- | ---
option | policy on placement of a left curly brace ('{') | left curly brace policy | eol
maxLineLength | maximum number of characters in a line | integer | 80
tokens | blocks to check | subset of tokens CLASS_DEF, CTOR_DEF, INTERFACE_DEF, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, METHOD_DEF | all tokens

#### Examples

To configure the check:

    <module name="LeftCurly"/>

To configure the check to apply the nl policy to type blocks:

    <module name="LeftCurly">
        <property name="option" value="nl"/>
        <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>
    </module>

#### Package

com.puppycrawl.tools.checkstyle.checks.blocks

#### Parent Module

TreeWalker

## NeedBraces

#### Description

Checks for braces around code blocks.

#### Properties

name | description | type | default value
--- | --- | --- | ---
tokens | blocks to check | subset of tokens LITERAL_DO, LITERAL_ELSE, LITERAL_IF, LITERAL_FOR, LITERAL_WHILE | all tokens

#### Examples

To configure the check:

    <module name="NeedBraces"/>

To configure the check for if and else blocks:

    <module name="NeedBraces">
        <property name="tokens" value="LITERAL_IF, LITERAL_ELSE"/>
    </module>

#### Package

com.puppycrawl.tools.checkstyle.checks.blocks

#### Parent Module

TreeWalker

## RightCurly

#### Description

Checks the placement of right curly braces ('}') for else, try, and catch tokens. The policy to verify is specified using property option.

#### Properties

name | description | type | default value
--- | --- | --- | ---
option | policy on placement of a right curly brace ('}') | right curly brace policy | same
tokens | blocks to check | subset of tokens LITERAL_CATCH, LITERAL_ELSE, LITERAL_TRY | LITERAL_CATCH, LITERAL_ELSE, LITERAL_TRY

#### Examples

To configure the check:

    <module name="RightCurly"/>

To configure the check with policy alone for else tokens:

    <module name="RightCurly">
        <property name="option" value="alone"/>
        <property name="tokens" value="LITERAL_ELSE"/>
    </module>

#### Package

com.puppycrawl.tools.checkstyle.checks.blocks

#### Parent Module

TreeWalker

## AvoidNestedBlocks

#### Description

Finds nested blocks, i.e. blocks that are used freely in the code.

Rationale: Nested blocks are often leftovers from the debugging process, they confuse the reader.

For example this Check finds the obsolete braces in

     public void guessTheOutput()
     {
         int whichIsWich = 0;
         {
             int whichIsWhich = 2;
         }
         System.out.println("value = " + whichIsWhich);
     }

and debugging / refactoring leftovers such as

    // if (conditionThatIsNotUsedAnyLonger)
    {
        System.out.println("unconditional");
    }

A case in a switch statement does not implicitly form a block. Thus to be able to introduce local variables that have case scope it is necessary to open a nested block. This is supported, set the allowInSwitchCase property to true and include all statements of the case in the block.

    switch (a)
    {
        case 0:
            // Never OK, break outside block
            {
                x = 1;
            }
            break;
        case 1:
            // Never OK, statement outside block
            System.out.println("Hello");
            {
                x = 2;
                break;
            }
        case 1:
            // OK if allowInSwitchCase is true
            {
                System.out.println("Hello");
                x = 2;
                break;
            }
    }

#### Properties

name | description | type | default value
--- | --- | --- | ---
allowInSwitchCase | Allow nested blocks in case statements | boolean | false

#### Examples

To configure the check:

    <module name="AvoidNestedBlocks"/>

#### Package

com.puppycrawl.tools.checkstyle.checks.blocks

#### Parent Module

TreeWalker

Back to the Checkstyle Home Page

Copyright © 2002-2003 Oliver Burn. All rights Reserved.