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
and debugging / refactoring leftovers such as
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.
name | description | type | default value |
---|---|---|---|
allowInSwitchCase | Allow nested blocks in case statements | Boolean | false |
To configure the check:
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
com.puppycrawl.tools.checkstyle.checks.blocks
Checks for empty blocks. This check does not validate sequential blocks.
Sequential blocks won't be checked. Also, no violations for fallthrough:
This check processes LITERAL_CASE and LITERAL_DEFAULT separately. So, if tokens=LITERAL_DEFAULT, following code will not trigger any violation, as the empty block belongs to LITERAL_CASE:
Configuration:
Result:
name | description | type | default value |
---|---|---|---|
option | policy on block contents | block policy | stmt |
tokens | tokens to check | subset of tokens LITERAL_WHILE, LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_DO, LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, INSTANCE_INIT, STATIC_INIT, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_CASE, LITERAL_DEFAULT, ARRAY_INIT. | LITERAL_WHILE, LITERAL_TRY, LITERAL_FINALLY, LITERAL_DO, LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, INSTANCE_INIT, STATIC_INIT, LITERAL_SWITCH, LITERAL_SYNCHRONIZED. |
To configure the check:
To configure the check for the text
policy and only try
blocks:
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
com.puppycrawl.tools.checkstyle.checks.blocks
Checks for empty catch blocks. There are two options to make validation more precise (by default Check allows empty catch block with any comment inside):
name | description | type | default value |
---|---|---|---|
exceptionVariableName | The name of variable associated with exception | String | ^$ |
commentFormat | The format of the first comment inside empty catch | String | .* |
To configure the Check to suppress empty catch block if exception's variable name is
expected
or ignore
or there's any comment inside:
To configure the Check to suppress empty catch block if single-line comment inside is "//This is expected":
To configure the Check to suppress empty catch block if single-line comment inside is "//This is expected" or exception's variable name is "myException" (any option is matching):
Such empty blocks would be suppressed:
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
com.puppycrawl.tools.checkstyle.checks.blocks
Checks for the placement of left curly braces
('{'
) for code blocks. The policy to verify is
specified using the property option
. Policies
eol
and nlow
take into account
the property maxLineLength
.
name | description | type | default value |
---|---|---|---|
option | policy on placement of a left curly brace ('{' ) |
left curly brace policy | eol |
ignoreEnums | If true, Check will ignore enums when left curly brace policy is EOL | Boolean | true |
maxLineLength | maximum number of characters in a line. ATTENTION: The option has been marked as deprecated since checkstyle 6.10 release. | Integer | 80 |
tokens | tokens to check | subset of tokens INTERFACE_DEF, CLASS_DEF, ANNOTATION_DEF, ENUM_DEF, CTOR_DEF, METHOD_DEF, ENUM_CONSTANT_DEF, LITERAL_WHILE, LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_SYNCHRONIZED, LITERAL_SWITCH, LITERAL_DO, LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, STATIC_INIT, OBJBLOCK, LAMBDA. | INTERFACE_DEF, CLASS_DEF, ANNOTATION_DEF, ENUM_DEF, CTOR_DEF, METHOD_DEF, ENUM_CONSTANT_DEF, LITERAL_WHILE, LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_SYNCHRONIZED, LITERAL_SWITCH, LITERAL_DO, LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, STATIC_INIT, OBJBLOCK, LAMBDA. |
To configure the check:
To configure the check to apply the nl
policy to
type blocks:
An example of how to configure the check to validate enum definitions:
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
com.puppycrawl.tools.checkstyle.checks.blocks
Checks for braces around code blocks.
name | description | type | default value |
---|---|---|---|
allowSingleLineStatement | allows single-line statements without braces | Boolean | false |
allowEmptyLoopBody | allows loops with empty bodies | Boolean | false |
tokens | tokens to check | subset of tokens LITERAL_DO, LITERAL_ELSE, LITERAL_FOR, LITERAL_IF, LITERAL_WHILE, LITERAL_CASE, LITERAL_DEFAULT, LAMBDA. | LITERAL_DO, LITERAL_ELSE, LITERAL_FOR, LITERAL_IF, LITERAL_WHILE. |
To configure the check:
To configure the check for if
and
else
blocks:
To configure the check to allow single-line statements
(if, while, do-while, for
) without braces:
Next statements won't be violated by Check:
To configure the Check to allow case, default
single-line statements
without braces:
Next statements won't be violated by Check:
To configure the check to allow loops (while, for
) with empty bodies:
Next statements won't be violated by Check:
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
com.puppycrawl.tools.checkstyle.checks.blocks
Checks the placement of right curly braces ('}'
)
for if-else, try-catch-finally blocks, while-loops, for-loops,
method definitions, class definitions, constructor definitions,
instance and static initialization blocks.
The policy to verify is specified using the property option
.
name | description | type | default value |
---|---|---|---|
option | policy on placement of a right curly brace ('}' ) |
right curly brace policy | same |
shouldStartLine | should we check if '}'
starts line. |
Boolean | true |
tokens | tokens to check | subset of tokens LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT, LAMBDA. | LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE. |
To configure the check:
To configure the check with policy alone
for else
and METHOD_DEF
tokens:
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
com.puppycrawl.tools.checkstyle.checks.blocks