com.puppycrawl.tools.checkstyle.checks.blocks
public class AvoidNestedBlocksCheck extends Check
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;
}
}
| Method Summary | |
|---|---|
| int[] | getDefaultTokens() |
| void | setAllowInSwitchCase(boolean aAllowInSwitchCase)
Setter for allowInSwitchCase property. |
| void | visitToken(DetailAST aAST) |
Parameters: aAllowInSwitchCase whether nested blocks are allowed if they are the only child of a switch case.