WhitespaceAround
Since Checkstyle 3.0
Description
public MyClass() {} // empty constructor
public void func() {} // empty method
public interface Foo {} // empty interface
public class Foo {} // empty class
public enum Foo {} // empty enum
MyClass c = new MyClass() {}; // empty anonymous class
while (i = 1) {} // empty while loop
for (int i = 1; i > 1; i++) {} // empty for loop
do {} while (i = 1); // empty do-while loop
Runnable noop = () -> {}; // empty lambda
public @interface Beta {} // empty annotation type
may optionally be exempted from the policy using the allowEmptyMethods, allowEmptyConstructors, allowEmptyTypes, allowEmptyLoops, allowEmptyLambdas, allowEmptyCatches and allowEmptySwitchBlockStatements properties.
This check does not flag as violation double brace initialization like:
new Properties() {{
setProperty("key", "value");
}};
Parameter allowEmptyCatches allows to suppress violations when token list contains SLIST to check if beginning of block is surrounded by whitespace and catch block is empty, for example:
try {
k = 5 / i;
} catch (ArithmeticException ex) {}
With this property turned off, this raises violation because the beginning of the catch block (left curly bracket) is not separated from the end of the catch block (right curly bracket).
Note: Switch expressions are ignored by this check.
Properties
Examples
To configure the check:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround"/>
</module>
</module>
Example:
class Example1 {
interface Empty {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
public Example1(){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
int y = 0;
void example() {
Runnable noop = () ->{};
// 4 violations above:
// ''->' is not followed by whitespace'
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
try { }
catch (Exception e){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { }
for (int i = 0; i < 10; i++){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
do {} while (y == 1);
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
switch (y) {
case 1: {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
}
void myFunction() {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
To configure the check for whitespace only around curly braces: Note: '{' can be parsed either to LCURLY or SLIST.
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="tokens" value="LCURLY, RCURLY, SLIST"/>
</module>
</module>
</module>
Example:
class Example2 {
interface Empty {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
public Example2(){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
int y = 0;
void example() {
Runnable noop = () ->{};
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
// ok '->', '(' and ')' not configured
try { }
catch (Exception e){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { }
for (int i = 0; i < 10; i++){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
do {} while (y == 1);
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
switch (y) {
case 1: {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
}
void myFunction() {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
To configure the check to allow empty method bodies:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="allowEmptyMethods" value="true"/>
</module>
</module>
</module>
Example:
class Example3 {
interface Empty {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
public Example3(){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
int y = 0;
void example() {
Runnable noop = () ->{};
// 4 violations above:
// ''->' is not followed by whitespace'
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
try { }
catch (Exception e){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { }
for (int i = 0; i < 10; i++){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
do {} while (y == 1);
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
switch (y) {
case 1: {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
}
void myFunction() {}
// ok, allowEmptyMethods is true
}
To configure the check to allow empty constructor bodies:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="allowEmptyConstructors" value="true"/>
</module>
</module>
</module>
Example:
class Example4 {
interface Empty {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
public Example4(){}
// violation above ''{' is not preceded with whitespace.
// ok, allowEmptyConstructors is true
int y = 0;
void example() {
Runnable noop = () ->{};
// 4 violations above:
// ''->' is not followed by whitespace'
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
try { }
catch (Exception e){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { }
for (int i = 0; i < 10; i++){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
do {} while (y == 1);
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
switch (y) {
case 1: {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
}
void myFunction() {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
To configure the check to allow empty type bodies:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="allowEmptyTypes" value="true"/>
</module>
</module>
</module>
Example:
class Example5 {
interface Empty {}
// ok, allowEmptyTypes is true
public Example5(){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
int y = 0;
void example() {
Runnable noop = () ->{};
// 4 violations above:
// ''->' is not followed by whitespace'
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
try { }
catch (Exception e){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { }
for (int i = 0; i < 10; i++){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
do {} while (y == 1);
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
switch (y) {
case 1: {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
}
void myFunction() {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
To configure the check to allow empty loop bodies:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="allowEmptyLoops" value="true"/>
</module>
</module>
</module>
Example:
class Example6 {
interface Empty {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
public Example6(){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
int y = 0;
void example() {
Runnable noop = () ->{};
// 4 violations above:
// ''->' is not followed by whitespace'
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
try { }
catch (Exception e){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { }
for (int i = 0; i < 10; i++){}
// ok, allowEmptyLoops
// is true above
do {} while (y == 1);
// ok, allowEmptyLoops is true
switch (y) {
case 1: {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
}
void myFunction() {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
To configure the check to allow empty lambda bodies:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="allowEmptyLambdas" value="true"/>
</module>
</module>
</module>
Example:
class Example7 {
interface Empty {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
public Example7(){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
int y = 0;
void example() {
Runnable noop = () ->{};
// violation above '->' is not followed by whitespace.
// ok, allowEmptyLambdas
// is true above
try { }
catch (Exception e){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { }
for (int i = 0; i < 10; i++){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
do {} while (y == 1);
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
switch (y) {
case 1: {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
}
void myFunction() {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
To configure the check to allow empty catch bodies:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="allowEmptyCatches" value="true"/>
</module>
</module>
</module>
Example:
class Example8 {
interface Empty {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
public Example8(){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
int y = 0;
void example() {
Runnable noop = () ->{};
// 4 violations above:
// ''->' is not followed by whitespace'
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
try { }
catch (Exception e){}
// ok, allowEmptyCatches
// is true above
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { }
for (int i = 0; i < 10; i++){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
do {} while (y == 1);
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
switch (y) {
case 1: {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
}
void myFunction() {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
Also, this check can be configured to ignore the colon in an enhanced for loop. The colon in an enhanced for loop is ignored by default.
To configure the check to ignore the colon:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="ignoreEnhancedForColon" value="false"/>
</module>
</module>
</module>
Example:
class Example9 {
interface Empty {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
public Example9(){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
int y = 0;
void example() {
Runnable noop = () ->{};
// 4 violations above:
// ''->' is not followed by whitespace'
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
try { }
catch (Exception e){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { } // violation '':' is not preceded with whitespace'
for (int i = 0; i < 10; i++){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
do {} while (y == 1);
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
switch (y) {
case 1: {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
}
void myFunction() {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
To configure the check to allow empty switch block statements:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="allowEmptySwitchBlockStatements" value="true"/>
</module>
</module>
</module>
Example:
class Example10 {
interface Empty {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
public Example10(){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
int y = 0;
void example() {
Runnable noop = () ->{};
// 4 violations above:
// ''->' is not followed by whitespace'
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
try { }
catch (Exception e){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for (char item: vowels) { }
for (int i = 0; i < 10; i++){}
// 3 violations above:
// ''{' is not followed by whitespace'
// ''{' is not preceded with whitespace'
// ''}' is not preceded with whitespace'
do {} while (y == 1);
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
switch (y) {
case 1: {}
// ok, allowEmptySwitchBlockStatements is true
}
}
void myFunction() {}
// 2 violations above:
// ''{' is not followed by whitespace'
// ''}' is not preceded with whitespace'
}
Use Cases
To configure the check for whitespace only around assignment operators:
<module name="Checker">
<module name="TreeWalker">
<module name="WhitespaceAround">
<property name="tokens"
value="ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN,
MOD_ASSIGN, SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN,
BOR_ASSIGN, BAND_ASSIGN"/>
</module>
</module>
</module>
Example:
class UseCase1 {
void example() {
int b=10;
// 2 violations above:
// ''=' is not followed by whitespace'
// ''=' is not preceded with whitespace'
int c = 10;
b += 10;
c*=10;
// 2 violations above:
// ''*=' is not followed by whitespace'
// ''*=' is not preceded with whitespace'
c *= 10;
c-=5;
// 2 violations above:
// ''-=' is not followed by whitespace'
// ''-=' is not preceded with whitespace'
c -= 5;
c/=2;
// 2 violations above:
// ''/=' is not followed by whitespace'
// ''/=' is not preceded with whitespace'
c /= 2;
c%=1;
// 2 violations above:
// ''%=' is not followed by whitespace'
// ''%=' is not preceded with whitespace'
c %= 1;
c>>=1;
// 2 violations above:
// ''>>=' is not followed by whitespace'
// ''>>=' is not preceded with whitespace'
c >>= 1;
c>>>=1;
// 2 violations above:
// ''>>>=' is not followed by whitespace'
// ''>>>=' is not preceded with whitespace'
c >>>= 1;
}
}
Example of Usage
Violation Messages
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
Fully Qualified Name
com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAroundCheck
Use this fully qualified class name in configuration when an exact class reference is required.






