Checkstyle / Module / Modifiers



修飾子のチェック。

ModifierOrder

親モジュールTreeWalker
実装クラスcom.puppycrawl.tools.checkstyle.checks.ModifierOrderCheck

修飾子の順番が、JLS 8.1.1, 8.3.1, 8.4.3 に適合しているかチェックします。この順番とは、以下のようなものです。

  1. public
  2. protected
  3. private
  4. abstract
  5. static
  6. final
  7. transient
  8. volatile
  9. synchronized
  10. native
  11. strictfp

記述サンプル

  • Standard Checkstyle
    <module name = "ModifierOrder" />
  • Plug-in Checkstyle
    <rule-configuration
        classname = "com.puppycrawl.tools.checkstyle.checks.ModifierOrderCheck"
        severity = "warning">
        <config-properties />
    </rule-configuration>

RedundantModifier

親モジュールTreeWalker
実装クラスcom.puppycrawl.tools.checkstyle.checks.RedundantModifierCheck

冗長な修飾子をチェックします。インターフェイスのメソッドは、JLS 9.4 に従って public, abstract がないことをチェックします。インターフェイスのフィールドは、JLS 9.3 に従って public, static, final がないことをチェックします。

3.2 からは、final クラスにおいてすべてのメソッドに final がないことをチェックします(JLS 8.4.3.3)。

プロパティ名デフォルト概要
tokensMETHOD_DEF, VARIABLE_DEFすべてチェックする対象

記述サンプル

  • Standard Checkstyle
    <module name = "RedundantModifier">
        <property name = "tokens" value = "METHOD_DEF" />
    </module>
  • Plug-in Checkstyle
    <rule-configuration
        classname = "com.puppycrawl.tools.checkstyle.checks.RedundantModifierCheck"
        severity = "warning">
        <config-properties>
            <config-property name = "tokens" value = "METHOD_DEF" />
        </config-properties>
    </rule-configuration>

チェックサンプル

<module name = "RedundantModifier">
    <property name = "tokens" value = "METHOD_DEF, VARIABLE_DEF" />
</module>

としたとき、以下のようになる(以下の例は、インターフェイス内の話)。

OK!  void getAttributeName(String name);
Boo! public void getAttributeName(String name);
Boo! abstract void getAttributeName(String name);
OK!  int MAX_CONNECTION = 10;
Boo! public static final int MAX_CONNECTION = 10;