| 親モジュール | TreeWalker |
|---|---|
| 実装クラス | com.puppycrawl.tools.checkstyle.checks.EmptyForIteratorPadCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.whitespace.EmptyForIteratorPadCheck(3.2) |
for 文のイテレーションの部分(3つめの要素のところ)がなにもない場合に空白を許可するかしないかをチェックします。
| プロパティ名 | 型 | デフォルト | 概要 |
| option | Pad Policy | nospace | 空のイテレーション部分の規約 |
<module name = "EmptyForIteratorPad">
<property name = "option" value = "space" />
</module><rule-configuration
classname = "com.puppycrawl.tools.checkstyle.checks.EmptyForIteratorPadCheck"
severity = "warning">
<config-properties>
<config-property name = "option" value = "space" />
</config-properties>
</rule-configuration><module name = "EmptyForIteratorPad">
<property name = "option" value = "space" />
</module>
としたときに、以下のようになる。
OK! for (; i < lists.max(); ) {
Boo! for (; i < lists.max();) {
| 親モジュール | TreeWalker |
|---|---|
| 実装クラス | com.puppycrawl.tools.checkstyle.checks.NoWhitespaceAfterCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck(3.2) |
トークンの後に余計な空白を入れていないかをチェックします。
| プロパティ名 | 型 | デフォルト | 概要 |
| allowLineBreaks | Boolean | true | 改行は認めるか? |
| tokens | ARRAY_INIT, BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS | すべて | チェック対象を選択 |
<module name = "NoWhitespaceAfter">
<property name = "allowLineBreaks" value = "no" />
<property name = "tokens" value = "DEC, DOT, INC" />
</module><rule-configuration
classname = "com.puppycrawl.tools.checkstyle.checks.NoWhitespaceAfterCheck"
severity = "warning">
<config-properties>
<config-property name = "allowLineBreaks" value = "no" />
<config-property name = "tokens" value = "DEC, DOT, INC" />
</config-properties>
</rule-configuration><module name = "NoWhitespaceAfter">
<property name = "allowLineBreaks" value = "no" />
<property name = "tokens" value = "DOT" />
</module>
とするとき、以下のようになる。
Boo! anObject.veryVeryVeryVeryVeryLongNameMethod().
run();
OK! anObject.veryVeryVeryVeryVeryLongNameMethod().run();
| 親モジュール | TreeWalker |
|---|---|
| 実装クラス | com.puppycrawl.tools.checkstyle.checks.NoWhitespaceBeforeCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceBeforeCheck(3.2) |
トークンの前に余計な空白を入れていないかをチェックします。
| プロパティ名 | 型 | デフォルト | 概要 |
| allowLineBreaks | Boolean | false | 改行は認めるか? |
| tokens | SEMI, DOT, POST_DEC, POST_INC | SEMI, POST_DEC, POST_INC | チェック対象を選択 |
<module name = "NoWhitespaceBefore">
<property name = "allowLineBreaks" value = "no" />
<property name = "tokens" value = "DOT, POST_DEC, POST_INC" />
</module><rule-configuration
classname = "com.puppycrawl.tools.checkstyle.checks.NoWhitespaceBeforeCheck"
severity = "warning">
<config-properties>
<config-property name = "allowLineBreaks" value = "no" />
<config-property name = "tokens" value = "DOT, POST_DEC, POST_INC" />
</config-properties>
</rule-configuration><module name = "NoWhitespaceBefore">
<property name = "allowLineBreaks" value = "true" />
<property name = "tokens" value = "SEMI, POST_INC" />
</module>
とするとき、以下のようになる。
OK! i
++
;
Boo! i++;
Boo! i ++;
Boo! i++ ;
| 親モジュール | TreeWalker |
|---|---|
| 実装クラス | com.puppycrawl.tools.checkstyle.checks.OperatorWrapCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck(3.2) |
一文が複数行に渡り、且つ行の区切りにオペレータがきた場合のオペレータの位置をチェックします。
| プロパティ名 | 型 | デフォルト | 概要 |
| option | Operator Wrap Policy | nl | オペレータの位置の規定 |
| tokens | ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, SL, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN | BAND, BOR, BSR, BXOR, COLON, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR | チェック対象を選択 |
<module name = "OperatorWrap">
<property name = "option" value = "eol" />
<property name = "tokens"
value = "ASSIGN, DIV_ASSIGN, MINUS_ASSIGN, PLUS_ASSING, STAR_ASSIGN" />
</module><rule-configuration
classname = "com.puppycrawl.tools.checkstyle.checks.OperatorWrapCheck"
severity = "warning">
<config-properties>
<config-property name = "option" value = "eol" />
<config-property name = "tokens"
value = "ASSIGN, DIV_ASSIGN, MINUS_ASSIGN, PLUS_ASSING, STAR_ASSIGN" />
</config-properties>
</rule-configuration><module name = "OperatorWrap">
<property name = "option" value = "nl" />
<property name = "tokens" value = "LOR" />
</module>
としたとき、以下のようになる。
Boo! if (condition.isActive(arbitraryObject) ||
condition.isWait(arbitraryObject)) {
OK! if (condition.isActive(arbitraryObject)
|| condition.isWait(arbitraryObject)) {
| 親モジュール | TreeWalker |
|---|---|
| 実装クラス | com.puppycrawl.tools.checkstyle.checks.ParenPadCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.whitespace.ParenPadCheck(3.2) |
丸括弧内のスペースによる整形をチェックします。
| プロパティ名 | 型 | デフォルト | 概要 |
| option | Pad Policy | nospace | 空白を入れるか入れないか? |
| tokens | CTOR_CALL, LPAREN, METHOD_CALL, RPAREN, SUPER_CTOR_CALL, TYPECAST | すべて | チェック対象を選択 |
<module name = "ParenPad">
<property name = "option" value = "space" />
<property name = "tokens" value = "TYPECAST" />
</module><rule-configuration
classname = "com.puppycrawl.tools.checkstyle.checks.ParenPadCheck"
severity = "warning">
<config-properties>
<config-property name = "option" value = "space" />
<config-property name = "tokens" value = "TYPECAST" />
</config-properties>
</rule-configuration><module name = "ParenPad">
<property name = "option" value = "space" />
<property name = "tokens" value = "TYPECAST" />
</module>
とすると、以下のようになる。
Boo! Employee employee = (Employee)people.getPerson("Hoge");
OK! Employee employee = ( Employee )people.getPerson("Hoge");
OK! Employee employee = ( Employee)people.getPerson("Hoge");
3番目の例は、チェックに引っかかって欲しいはず。このときは、RPAREN も入れる必要がある。
<module name = "ParenPad">
<property name = "option" value = "space" />
<property name = "tokens" value = "TYPECAST, RPAREN" />
</module>
とすれば、先ほどの例の結果はこのように変わる。
Boo! Employee employee = (Employee)people.getPerson("Hoge");
OK! Employee employee = ( Employee )people.getPerson("Hoge");
Boo! Employee employee = ( Employee)people.getPerson("Hoge");
| 親モジュール | TreeWalker |
|---|---|
| 実装クラス | com.puppycrawl.tools.checkstyle.checks.TabCharacterCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.whitespace.TabCharacterCheck(3.2) |
タブ文字がないことをチェックします。
Rationale: 開発者が、ソースコードを読むためにエディタのタブの幅の設定をいじる必要がないようにすべきである。Apache Jakarta コーディング標準から抜粋: 分散している開発環境では、CVS の発するメッセージはメーリングリストを介して送られる。もしタブが使われていると、そのメールを読むのはほとんど不可能でしょう。
<module name = "TabCharacter" />
<rule-configuration
classname = "com.puppycrawl.tools.checkstyle.checks.TabCharacterCheck"
severity = "warning">
<config-properties />
</rule-configuration>| 親モジュール | TreeWalker |
|---|---|
| 実装クラス | com.puppycrawl.tools.checkstyle.checks.WhitespaceAfterCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAfterCheck(3.2) |
トークンの直後に空白が存在するかをチェックします。
| プロパティ名 | 型 | デフォルト | 概要 |
| tokens | COMMA, SEMI, TYPECAST | すべて | チェック対象を選択 |
<module name = "WhitespaceAfter">
<property name = "tokens" value = "COMMA, SEMI" />
</module><rule-configuration
classname = "com.puppycrawl.tools.checkstyle.checks.WhitespaceAfterCheck"
severity = "warning">
<config-properties>
<config-property name = "tokens" value = "COMMA, SEMI" />
</config-properties>
</rule-configuration><module name = "WhitespaceAfter">
<property name = "tokens" value = "COMMA, SEMI, TYPECAST" />
</module>
としたとき、以下のようになる。
OK! String[] labels = new String[] {"Hoge", "Foo", "Bar", };
Boo! String[] lables = new String[] {"Hoge","Foo","Bar",};
OK! for (int i = 0; i < labels.length; i++) {
Boo! for (int i = 0;i < lables.length;i++) {
OK! Employee employee = (Employee) people.getPerson("Hoge");
Boo! Employee employee = (Employee)people.getPersion("Hoge");
| 親モジュール | TreeWalker |
|---|---|
| 実装クラス | com.puppycrawl.tools.checkstyle.checks.WhitespaceAroundCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAroundCheck(3.2) |
トークンの両脇に空白があることをチェックします。
| プロパティ名 | 型 | デフォルト | 概要 |
| tokens | ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHITE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN | すべて | チェック対象を選択 |
<module name = "WhitespaceAround">
<property name = "tokens"
value = "ASSIGN, DIV_ASSIGN, MINUS_ASSIGN, PLUS_ASSING, STAR_ASSIGN" />
</module><rule-configuration
classname = "com.puppycrawl.tools.checkstyle.checks.WhitespaceAroundCheck"
severity = "warning">
<config-properties>
<config-property name = "tokens"
value = "ASSIGN, DIV_ASSIGN, MINUS_ASSIGN, PLUS_ASSING, STAR_ASSIGN" />
</config-properties>
</rule-configuration><module name = "WhitespaceAround">
<property name = "tokens" value = "ASSIGN, STAR" />
</module>
としたとき、以下のようになる。
OK! String name = new String("hoge");
Boo! String name= new String("hoge");
Boo! String name =new String("hoge");
OK! int amount = minute * SECOND_PER_MINUTE;
Boo! int amount = minute*SECOND_PER_MINUTE;