1
2
3
4
5 package com.qulice.checkstyle;
6
7 import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
8 import com.puppycrawl.tools.checkstyle.api.DetailAST;
9 import com.puppycrawl.tools.checkstyle.api.TokenTypes;
10
11
12
13
14
15
16
17
18
19
20
21
22 public final class NestedSwitchCheck extends AbstractCheck {
23
24 @Override
25 public int[] getDefaultTokens() {
26 return this.getRequiredTokens();
27 }
28
29 @Override
30 public int[] getAcceptableTokens() {
31 return this.getRequiredTokens();
32 }
33
34 @Override
35 public int[] getRequiredTokens() {
36 return new int[] {TokenTypes.LITERAL_SWITCH};
37 }
38
39 @Override
40 public void visitToken(final DetailAST ast) {
41 DetailAST parent = ast.getParent();
42 while (parent != null) {
43 if (parent.getType() == TokenTypes.LITERAL_SWITCH) {
44 this.log(ast.getLineNo(), "Nested switch statements are not allowed");
45 break;
46 }
47 parent = parent.getParent();
48 }
49 }
50 }