検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 3.1 |
ネストされたブロック(コード内で自由に使用されているブロック)がないかどうかをチェックする。
switch文のcaseはブロックを形成していないため、caseスコープを持つローカル変数を宣言するには、ネストされたブロックを記述する必要がある。
しかし、デフォルトの設定ではネストしたブロックはこのチェックで検出されてしまう。
allowInSwitchCaseプロパティをtrueに設定することでswitchのcase内のブロックを記述することができるようになる。
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
allowInSwitchCase | boolean | false | switchのcase内のブロックを許可するかどうか | 3.2 |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AvoidNestedBlocks"/> </module> </module>
チェック実行例
public class MyClass { public void foo() { int myInteger = 0; // NG { myInteger = 2; } System.out.println("myInteger = " + myInteger); switch (a) { case 1: // NG { System.out.println("Case 1"); break; } case 2: System.out.println("Case 2"); break; } } }
プロパティ設定あり
allowInSwitchCase
trueを設定した場合、switchのcase内にブロックを記述することができる。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AvoidNestedBlocks"> <property name="allowInSwitchCase" value="true"/> </module> </module> </module>
チェック実行例
public class MyClass { public void foo() { int myInteger = 0; // NG { myInteger = 2; } System.out.println("myInteger = " + myInteger); switch (a) { case 1: // OK 「allowInSwitchCase=true」なのでcaseの中にブロックを記述可能 { System.out.println("Case 1"); break; } case 2: System.out.println("Case 2"); break; } } }