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_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE
shouldStartLine should we check if '}' starts line. boolean true

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 whichIsWhich = 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