## com.puppycrawl.tools.checkstyle.checks.blocks
Class AvoidNestedBlocksCheck

    java.lang.Object
      com.puppycrawl.tools.checkstyle.api.AutomaticBean
          com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
              com.puppycrawl.tools.checkstyle.api.Check
                  com.puppycrawl.tools.checkstyle.checks.blocks.AvoidNestedBlocksCheck

All Implemented Interfaces:
  Configurable, Contextualizable

    public class AvoidNestedBlocksCheck

extends Check

Finds nested blocks.

For example this Check flags confusing code like

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

and debugging / refactoring leftovers such as

     // if (someOldCondition)
     {
         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;
             }
     }

Author:
  lkuehne

Constructor Summary
`AvoidNestedBlocksCheck()`

Method Summary
`int[]` `getDefaultTokens()` Returns the default token a check is interested in.
`void` `setAllowInSwitchCase(boolean aAllowInSwitchCase)` Setter for allowInSwitchCase property.
`void` `visitToken(DetailAST aAST)` Called to process a token.

Methods inherited from class com.puppycrawl.tools.checkstyle.api.Check
`beginTree, destroy, finishTree, getAcceptableTokens, getClassLoader, getFileContents, getLines, getRequiredTokens, getTabWidth, getTokenNames, init, leaveToken, log, log, setClassLoader, setFileContents, setMessages, setTabWidth, setTokens`

Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
`getId, getMessageBundle, getSeverity, getSeverityLevel, log, log, log, log, log, log, log, log, log, setId, setSeverity`

Methods inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean
`configure, contextualize, finishLocalSetup, getConfiguration, setupChild`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### AvoidNestedBlocksCheck

    public AvoidNestedBlocksCheck()

Method Detail

### getDefaultTokens

    public int[] getDefaultTokens()

  Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.

  Specified by:
    `getDefaultTokens` in class `Check`
  Returns:
    the default tokens
  See Also:
    `TokenTypes`

### visitToken

    public void visitToken(DetailAST aAST)

  Called to process a token.

  Overrides:
    `visitToken` in class `Check`
  Parameters:
    `aAST` - the token to process

### setAllowInSwitchCase

    public void setAllowInSwitchCase(boolean aAllowInSwitchCase)

  Setter for allowInSwitchCase property.

  Parameters:
    `aAllowInSwitchCase` - whether nested blocks are allowed if they are the only child of a switch case.

Back to the Checkstyle Home Page