FallThrough
Since Checkstyle 3.4
Description
switch
statements. Finds locations where a case
contains Java code but lacks a break
, return
,
yield
, throw
or continue
statement.
The check honors special comments to suppress the warning.
By default, the texts
"fallthru", "fall thru", "fall-thru",
"fallthrough", "fall through", "fall-through"
"fallsthrough", "falls through", "falls-through" (case-sensitive).
The comment containing these words must be all on one line,
and must be on the last non-empty line before the
case
triggering the warning or on
the same line before the case
(ugly, but possible). Any other comment may follow on the same line.
Note: The check assumes that there is no unreachable
code in the case
.
Properties
Examples
To configure the check:
<module name="Checker">
<module name="TreeWalker">
<module name="FallThrough"/>
</module>
</module>
Example:
class Example1 {
public void foo() throws Exception {
int i = 0;
while (i >= 0) {
switch (i) {
case 1:
i++;
/* block */ /* fallthru */ // comment
case 2: // ok, ReliefPattern is present in above line.
i++;
break;
case 3:
i++;
return;
case 4:
i++;
throw new Exception();
case 5:
i++; // no break by design
case 6: // violation 'Fall\ through from previous branch of the switch'
case 7:
i++;
continue;
case 11:
i++;
}
}
}
}
To configure the check to enable check for last case group:
<module name="Checker">
<module name="TreeWalker">
<module name="FallThrough">
<property name="checkLastCaseGroup" value="true"/>
</module>
</module>
</module>
Example:
class Example2 {
public void foo() throws Exception {
int i = 0;
while (i >= 0) {
switch (i) {
case 1:
i++;
case 2: // violation 'Fall\ through from previous branch of the switch'
i++;
break;
case 3:
i++;
return;
case 4:
i++;
throw new Exception();
case 5:
i++; // no break by design
case 6: // violation 'Fall\ through from previous branch of the switch'
case 7:
i++;
continue;
case 11: // violation 'Fall\ through from the last branch of the switch'
i++;
}
}
}
}
To configure the check with custom relief pattern:
<module name="Checker">
<module name="TreeWalker">
<module name="FallThrough">
<property name="reliefPattern" value="no break by design"/>
</module>
</module>
</module>
Example:
class Example3 {
public void foo() throws Exception {
int i = 0;
while (i >= 0) {
switch (i) {
case 1:
i++;
case 2: // violation 'Fall\ through from previous branch of the switch'
i++;
break;
case 3:
i++;
return;
case 4:
i++;
throw new Exception();
case 5:
i++; // no break by design
case 6:
case 7:
i++;
continue;
case 11:
i++;
}
}
}
}
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