Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

com.puppycrawl.tools.checkstyle.checks.blocks
Class AvoidNestedBlocksCheck  view AvoidNestedBlocksCheck download AvoidNestedBlocksCheck.java

java.lang.Object
  extended bycom.puppycrawl.tools.checkstyle.api.AutomaticBean
      extended bycom.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
          extended bycom.puppycrawl.tools.checkstyle.api.Check
              extended bycom.puppycrawl.tools.checkstyle.checks.blocks.AvoidNestedBlocksCheck
All Implemented Interfaces:
com.puppycrawl.tools.checkstyle.api.Configurable, com.puppycrawl.tools.checkstyle.api.Contextualizable

public class AvoidNestedBlocksCheck
extends com.puppycrawl.tools.checkstyle.api.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;
         }
 }
 


Field Summary
private  boolean mAllowInSwitchCase
          Whether nested blocks are allowed if they are the only child of a switch case.
 
Fields inherited from class com.puppycrawl.tools.checkstyle.api.Check
 
Fields inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
 
Fields inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean
 
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(com.puppycrawl.tools.checkstyle.api.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
getMessageBundle, getSeverity, getSeverityLevel, log, log, log, log, log, log, 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
 

Field Detail

mAllowInSwitchCase

private boolean mAllowInSwitchCase
Whether nested blocks are allowed if they are the only child of a switch case.

Constructor Detail

AvoidNestedBlocksCheck

public AvoidNestedBlocksCheck()
Method Detail

getDefaultTokens

public int[] getDefaultTokens()
Description copied from class: com.puppycrawl.tools.checkstyle.api.Check
Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.


visitToken

public void visitToken(com.puppycrawl.tools.checkstyle.api.DetailAST aAST)
Description copied from class: com.puppycrawl.tools.checkstyle.api.Check
Called to process a token.


setAllowInSwitchCase

public void setAllowInSwitchCase(boolean aAllowInSwitchCase)
Setter for allowInSwitchCase property.