DefaultComesLast

Since Checkstyle 3.4

Description

Check 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
skipIfLastAndSharedWithCase Control whether to allow default along with case if they are not last. boolean false 7.7

Examples

To configure the check:

<module name="Checker">
  <module name="TreeWalker">
    <module name="DefaultComesLast"/>
  </module>
</module>
        

Example:

public class Example1 {

  public void method() {
    int i = 2, x;
    switch (i) {
      case 1:
        break;
      case 2:
        break;
      default:
        break;
    }

    switch (i) {
      case 1:
        break;
      case 2:
        break;
    }

    switch (i) {
      case 1:
        break;
      default: // violation, 'Default should be last label in the switch'
        break;
      case 2:
        break;
    }

    switch (i) {
      case 1:
        break;
      default:
      case 2:
        break;
    }

    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 check to allow default label to be not last if it is shared with case:

<module name="Checker">
  <module name="TreeWalker">
    <module name="DefaultComesLast">
      <property name="skipIfLastAndSharedWithCase" value="true"/>
    </module>
  </module>
</module>
        

Example:

public class Example2 {

  public void method() {
    int i = 2, x;
    switch (i) {
      case 1:
        break;
      case 2:
        break;
      default:
        break;
    }

    switch (i) {
      case 1:
        break;
      case 2:
        break;
    }

    switch (i) {
      case 1:
        break;
      default: // violation, 'Default should be last label in the switch'
        break;
      case 2:
        break;
    }

    switch (i) {
      case 1:
        break;
      default: // violation, 'Default should be last label in the case group'
      case 2:
        break;
    }

    switch (i) {
      case 1: x = 9;
      default: x = 10; // violation, 'Default should be last label in the switch'
      case 2: x = 32;
    }
  }
}
        

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.

Package

com.puppycrawl.tools.checkstyle.checks.coding

Parent Module

TreeWalker