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 |
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>
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.
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 |
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>
name | description | type | default value |
---|---|---|---|
tokens | blocks to check | subset of tokens LITERAL_DO, LITERAL_ELSE, LITERAL_IF, LITERAL_FOR, LITERAL_WHILE | all tokens |
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>
Checks the placement of right curly braces ('}') for else, try, and catch tokens. The policy to verify is specified using property option.
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 |
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>
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; } }
name | description | type | default value |
---|---|---|---|
allowInSwitchCase | Allow nested blocks in case statements | boolean | false |