検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 3.0 |
コードブロックの周りに中括弧があるかどうかをチェックする。
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
allowSingleLineStatement | boolean | false | 中括弧のない1行の文を許可するかどうか | 6.5 |
allowEmptyLoopBody | boolean | false | 空のループを許可するかどうか | 6.12.1 |
tokens | トークンの サブセット | LITERAL_DO, LITERAL_ELSE, LITERAL_FOR, LITERAL_IF, LITERAL_WHILE |
チェック対象のトークン | 3.0 |
〇トークンのサブセットには以下の値が設定可能
値 | 説明 |
---|---|
LAMBDA | ラムダ式の-> |
LITERAL_CASE | case |
LITERAL_DEFAULT | default |
LITERAL_DO | do |
LITERAL_ELSE | else |
LITERAL_FOR | for |
LITERAL_IF | if |
LITERAL_WHILE | while |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="NeedBraces"/> </module> </module>
チェック実行例
// NG if文の処理が1行であっても、中括弧で囲む必要がある if (obj.isValid()) return true; // OK if (true) { return true; } // OK for (int i = 0; i < 5; i++) { ++count; } // NG 処理のないループ処理は書かない for (int j = 0; j < 10; j++);
プロパティ設定あり
allowSingleLineStatement
trueを設定した場合、中括弧のない1行の文を許可する。(デフォルト:false)
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="NeedBraces"> <property name="allowSingleLineStatement" value="true"/> </module> </module> </module>
チェック実行例
// OK 「allowSingleLineStatement=true」なので1行の処理の場合は中括弧がなくてもOK if (obj.isValid()) return true; // OK if (true) { return true; } // OK for (int i = 0; i < 5; i++) { ++count; } // NG 処理のないループ処理は書かない for (int j = 0; j < 10; j++);
allowEmptyLoopBody
trueを設定した場合、空のループを許可する。(デフォルト:false)
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="NeedBraces"> <property name="allowEmptyLoopBody" value="true"/> </module> </module> </module>
チェック実行例
// NG if文の処理が1行であっても、中括弧で囲む必要がある if (obj.isValid()) return true; // OK if (true) { return true; } // OK for (int i = 0; i < 5; i++) { ++count; } // OK 「allowEmptyLoopBody=true」なので処理のないループ処理を書くことが出来る for (int j = 0; j < 10; j++);
tokens
チェック対象のトークンをコンマ区切りで記述する。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="NeedBraces"> <property name="tokens" value="LITERAL_IF"/> </module> </module> </module>
チェック実行例
// NG if文の処理が1行であっても、中括弧で囲む必要がある if (obj.isValid()) return true; // OK if (true) { return true; } // OK for文はチェック対象外 for (int i = 0; i < 5; i++) { ++count; } // OK for文はチェック対象外 for (int j = 0; j < 10; j++);