親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.EmptyBlockCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.blocks.EmptyBlockCheck(3.2) |
空のブロックがないかをチェックします。
プロパティ名 | 型 | デフォルト | 概要 |
option | Block Policy | statement | 空とみなすブロックの規定 |
tokens | LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF, LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCEOF_INIT(Since 3.2), STATIC_INIT | すべて | チェックするブロックを指定 |
<module name = "EmptyBlock"> <property name = "option" value = "statement" /> <property name = "tokens" value = "LITERAL_FINALLY, STATIC_INIT" /> </module>
<rule-configuration classname = "com.puppycrawl.tools.checkstyle.checks.EmptyBlockCheck" severity = "warning"> <config-properties> <config-property name = "option" value = "statement" /> <config-property name = "tokens" value = "LITERAL_FINALLY, STATIC_INIT" /> </config-properties> </rule-configuration>
<module name = "EmptyBlock"> <property name = "option" value = "text" /> <property name = "tokens" value = "LITERAL_FINALLY" /> </module>
としたとき、以下のようになる。
OK! finally { conn.close(); } Boo! finally { // do nothing } Boo! finally { }
2番目のコメントのみのブロックを認めたい場合は、option に text を指定する。
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.LeftCurlyCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.blocks.LefCurlyCheck(3.2) |
ブロックの開始文字である "{" の位置をチェックします。
プロパティ名 | 型 | デフォルト | 概要 |
option | Left Curly Brace Policy | eol | "{"をどこに置くかの規定 |
maxLineLength | Integer | 80 | 一行の最大文字数*1 |
tokens | CLASS_DEF, CTOR_DEF, INTERFACE_DEF, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, METHOD_DEF | すべて | チェックするブロックを指定 |
<module name = "LeftCurly"> <property name = "option" value = "nlow" /> <property name = "maxLineLength" value = "100" /> <property name = "tokens" value = "LITERAL_ELSE, LITERAL_IF" /> </module>
<rule-configuration classname = "com.puppycrawl.tools.checkstyle.checks.LeftCurlyCheck" severity = "warning"> <config-properties> <config-property name = "option" value = "nlow" /> <config-property name = "maxLineLength" value = "100" /> <config-property name = "tokens" value = "LITERAL_ELSE, LITERAL_IF" /> </config-properties> </rule-configuration>
<module name = "LeftCurly"> <property name = "option" value = "eol" /> <property name = "tokens" value = "CLASS_DEF" /> </module>
としたとき、以下のようになる。
OK! public class Employee implements Person { Boo! public class Employee implements Person {
行の長さによってチェックを替えたい場合は、nlow を使う。
<module name = "LeftCurly"> <property name = "option" value = "nlow" /> <property name = "maxLineLength" value = "40" /> <property name = "tokens" value = "CLASS_DEF" /> </module>
としたとき、以下のようになる。
OK! public class Employee { Boo! public class Employee implements Person { OK! public class Employee implements Person {
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.NeedBracesCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheck(3.2) |
ブロック内に1文しかない場合に大括弧("{" や "}")を省略できるが、これを省略しないようにチェックします。
プロパティ名 | 型 | デフォルト | 概要 |
tokens | LITERAL_DO, LITERAL_ELSE, LITERAL_IF, LITERAL_FOR, LITERAL_WHILE | すべて | チェックするブロックを指定 |
<module name = "NeedBraces"> <property name = "tokens" value = "LITERAL_ELSE, LITERAL_IF, LITERAL_FOR" /> </module>
<rule-configuration classname = "com.puppycrawl.tools.checkstyle.checks.NeedBracesCheck" severity = "warning"> <config-properties> <config-property name = "tokens" value = "LITERAL_ELSE, LITERAL_IF, LITERAL_FOR" /> </config-properties> </rule-configuration>
<module name = "NeedBraces"> <property name = "tokens" value = "LITERAL_IF" /> </module>
としたとき、以下のようになる。
OK! if (isAvailable()) { someOperation(); } Boo! if (isAvailable()) someOperation();
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.RightCurlyCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck(3.2) |
ブロックの終了文字である "}" の位置をチェックします。LITERAL_CATCH, LITERAL_TRY の場合は、(Try 節や Catch節の)次の Catch 節か Finally 節のチェックを、LITERAL_ELSE は、その Else文及び Else If 節のチェックを行います。
プロパティ名 | 型 | デフォルト | 概要 |
option | Right Curly Brace Policy | same | "}"をどこに置くかの規定 |
tokens | LITERAL_CATCH, LITERAL_ELSE, LITERAL_TRY | すべて | チェックするブロックを指定 |
<module name = "RightCurly"> <property name = "option" value = "alone" /> <property name = "tokens" value = "LITERAL_CATCH, LITERAL_TRY" /> </module>
<rule-configuration classname = "com.puppycrawl.tools.checkstyle.checks.RightCurlyCheck" severity = "warning"> <config-properties> <config-property name = "option" value = "alone" /> <config-property name = "tokens" value = "LITERAL_CATCH, LITERAL_TRY" /> </config-properties> </rule-configuration>
<module name = "RightCurly"> <property name = "option" value = "alone" /> <property name = "tokens" value = "LITERAL_ELSE" /> </module>
としたとき、以下のようになる。
OK! } else { Boo! } else {
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.AvoidNestedBlockCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.blocks.AvoidNestedBlockCheck(3.2) |
無用にネストしたブロックをチェックします。
Rationale: ネストしたブロックは、デバッグの過程で残してしまうことがある。これは、読む側を混乱させてしまう。
プロパティ名 | 型 | デフォルト | 概要 |
allowInSwitchCase | Boolean | false | (Since 3.2)長いので後述 |
allowInSwitchCase とは、true にすると case 中のすべての文を含んだブロックの使用を許可することができます。case 節中は、ブロックのようになっていながら、暗黙的にブロックとして扱われるわけではありません。そのため、ブロックとして扱いたい処理をする場合は、明示的にブロックを作る必要があるためです。
<module name = "AvoidNestedBlock" />
<rule-configuration classname = "com.puppycrawl.tools.checkstyle.checks.AvoidNestedBlockCheck" severity = "warning"> <config-properties /> </rule-configuration>
例えば、以下のようなものをチェックに引っかけることができます。
boolean failOnError = true; { boolean failOnError = false; // ここがだめ } if (failOnError) {