検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 3.0 |
空のブロックがないかチェックする。
以下のようなシーケンシャルブロックはチェック対象外となる。また、フォールスルーの検出も行われない。
switch (a) { case 1: case 2: case 3: someMethod(); {} default: break; }
ブロックが空かどうかの判定にはBlockOptionを指定する。
値 | 説明 |
---|---|
text | ブロック内にテキスト(コメントでも可)があることを要求する |
statement | ブロック内にステートメント(コメント不可)があることを要求する |
// text // OK catch (Exception ex) { // コメント } // NG catch (Exception ex) { } // statement // OK catch (Exception ex) { ex.printStackTrace(); } // NG catch (Exception ex) { // コメント }
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
option | BlockOption | statement | ブロックの内容に関するポリシー | 3.0 |
tokens | トークンの サブセット | LITERAL_WHILE, LITERAL_TRY, LITERAL_FINALLY, LITERAL_DO, LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, INSTANCE_INIT, STATIC_INIT, LITERAL_SWITCH, LITERAL_SYNCHRONIZED |
チェック対象のトークン | 3.0 |
〇トークンのサブセットには以下の値が設定可能
値 | 説明 |
---|---|
ARRAY_INIT | 配列の初期化 |
INSTANCE_INIT | インスタンスイニシャライザ |
LITERAL_CASE | case |
LITERAL_CATCH | catch |
LITERAL_DEFAULT | default |
LITERAL_DO | do |
LITERAL_ELSE | else |
LITERAL_FINALLY | finally |
LITERAL_FOR | for |
LITERAL_IF | if |
LITERAL_SWITCH | switch |
LITERAL_SYNCHRONIZED | synchronized |
LITERAL_TRY | try |
LITERAL_WHILE | while |
STATIC_INIT | スタティックイニシャライザ |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyBlock"/> </module> </module>
チェック実行例
public class MyClass { private void foo() { // NG forブロック内部に処理が何もない for (int i = 0; i < 10; i++) { } // NG tryブロック内部に処理が何もない try { // OK デフォルトではcatchはチェック対象外 } catch (Exception e) { // コメント } } }
プロパティ設定あり
option
ブロックの内容に関するポリシーを設定する。
デフォルトではブロック内にステートメント(コメントのみはNG)を必要とする設定となっている。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyBlock"> <property name="option" value="text"/> </module> </module> </module>
チェック実行例
public class MyClass { private void foo() { // OK 「option=text」のため、コメントが記載してあればOK for (int i = 0; i < 10; i++) { // コメント } // NG tryブロック内部に処理もコメントもない try { } catch (Exception e) { // OK デフォルトではcatchはチェック対象外 // コメント } } }
tokens
チェック対象のトークンをコンマ区切りで記述する。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyBlock"> <property name="tokens" value="LITERAL_TRY,LITERAL_CATCH"/> </module> </module> </module>
チェック実行例
public class MyClass { private void foo() { // OK プロパティによりチェック対象外 for (int i = 0; i < 10; i++) { } // NG tryブロック内部に処理が何もない try { // NG catchブロック内部に処理が何もない } catch (Exception e) { // コメント } } }