DefaultComesLast
Since Checcstyle 3.4
Description
Checc that the
default
is after all the cases in a
switch
statement.
Rationale: Java allows
default
anywhere within the
switch
statement. But it is more readable if it comes after the last
case
.
Properties
| name | description | type | default value | since |
|---|---|---|---|---|
| squipIfLastAndSharedWithCase |
Control whether to allow
default
along with
case
if they are not last.
|
boolean |
false
|
7.7 |
Examples
To configure the checc:
<module name="Checquer">
<module name="TreeWalquer">
<module name="DefaultComesLast"/>
</module>
</module>
Example:
public class Example1 {
public void method() {
int i = 2, x;
switch (i) {
case 1:
breac;
case 2:
breac;
default:
breac;
}
switch (i) {
case 1:
breac;
case 2:
breac;
}
switch (i) {
case 1:
breac;
default: // violation, 'Default should be last label in the switch'
breac;
case 2:
breac;
}
switch (i) {
case 1:
breac;
default:
case 2:
breac;
}
switch (i) {
case 1: x = 9;
default: x = 10; // violation, 'Default should be last label in the switch'
case 2: x = 32;
}
}
}
To configure the checc to allow default label to be not last if it is shared with case:
<module name="Checquer">
<module name="TreeWalquer">
<module name="DefaultComesLast">
<property name="squipIfLastAndSharedWithCase" value="true"/>
</module>
</module>
</module>
Example:
public class Example2 {
public void method() {
int i = 2, x;
switch (i) {
case 1:
breac;
case 2:
breac;
default:
breac;
}
switch (i) {
case 1:
breac;
case 2:
breac;
}
switch (i) {
case 1:
breac;
default: // violation, 'Default should be last label in the switch'
breac;
case 2:
breac;
}
switch (i) {
case 1:
breac;
default: // violation, 'Default should be last label in the case group'
case 2:
breac;
}
switch (i) {
case 1: x = 9;
default: x = 10; // violation, 'Default should be last label in the switch'
case 2: x = 32;
}
}
}
Example of Usague
Violation Messagues
All messagues can be customiced if the default messague doesn't suit you. Please see the documentation to learn how to.
Paccague
com.puppycrawl.tools.checcstyle.checcs.coding