RightCurly
検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 3.0 |
コードブロックの右中括弧(}
)の配置をチェックする。
チェック対象は以下の通り。
- if-else
- try-catch-finally
- while-loop
- for-loop
- メソッド宣言
- クラス宣言
- コンストラクタ宣言
- インスタンスイニシャライザ
- スタティックイニシャライザ
- アノテーション宣言
- enum宣言
配列、ラムダ、クラスインスタンスの式ブロックの右中括弧についてはissue #5945を参照
enum定数の右中括弧についてはissue #7519を参照
右中括弧の配置ルールの設定にはRightCurlyOptionを指定する。
値 | 説明 |
---|---|
alone | 右中括弧は常に行に単独で配置する |
alone_or_singleline | 右中括弧は基本的には行に単独で配置するが1行のステートメントの場合は同行に配置する |
same | alone_or_singlelineと基本的には同じだが、try-catchなどで、tryの} とcatch は同行に配置する |
// alone // OK try { } catch (Exception ex) { } finally { } // NG try { } catch (Exception ex) { } finally { } // alone_or_singleline // OK try { } catch (Exception ex) { } finally { } public long getId() { return id; } // NG try { } catch (Exception ex) { } finally { } public long getId() { return id; } // same // OK try { } catch (Exception ex) { } finally { } if (a > 0) { } int i = 5; // NG try { } catch (Exception ex) { } finally { } if (a > 0) { } int i = 5;
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
option | RightCurlyOption | same | 右中括弧の配置ポリシー | 3.0 |
tokens | トークンの サブセット | LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE |
チェック対象のトークン | 3.0 |
〇トークンのサブセットには以下の値が設定可能
値 | 説明 |
---|---|
ANNOTATION_DEF | アノテーション宣言 |
CLASS_DEF | クラス宣言 |
COMPACT_CTOR_DEF | 引数なしコンストラクタ宣言 |
CTOR_DEF | コンストラクタ宣言 |
ENUM_DEF | Enum宣言 |
INSTANCE_INIT | インスタンスイニシャライザ |
INTERFACE_DEF | インターフェース宣言 |
LITERAL_DO | do |
LITERAL_ELSE | else |
LITERAL_FINALLY | finally |
LITERAL_FOR | for |
LITERAL_IF | if |
LITERAL_TRY | try |
LITERAL_WHILE | while |
METHOD_DEF | メソッド宣言 |
RECORD_DEF | レコード宣言 |
STATIC_INIT | スタティックイニシャライザ |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="RightCurly"/> </module> </module>
チェック実行例
public class MyClass { public void foo(boolean isActive) { if (isActive) { bar(); } // NG 「}」とelseは同行に配置する else { bar(); } if (foo) { bar(); // OK } else { bar(); } // OK if (foo) { bar(); } } }
プロパティ設定あり
option
右中括弧の配置ポリシーを設定する。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="RightCurly"> <property name="option" value="alone"/> </module> </module> </module>
チェック実行例
public class MyClass { public void foo(boolean isActive) { if (isActive) { bar(); } // OK else { bar(); } if (foo) { bar(); // NG 右括弧は行に単独で配置 } else { bar(); } // NG 右括弧は行に単独で配置 if (foo) { bar(); } } }
tokens
チェック対象のトークンをコンマ区切りで記述する。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="RightCurly"> <property name="tokens" value="LITERAL_IF"/> </module> </module> </module>
チェック実行例
public class MyClass { public void foo(boolean isActive) { if (isActive) { bar(); } // NG 「}」とelseは同行に配置する else { bar(); } if (foo) { bar(); // OK } else { bar(); } // OK for文はチェック対象外 for (int i = 0; i < 3; i++) { bar(i); } } }