SJ blog
Eclipse
Z

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

EclipseにCheckstyleを導入してコード品質を自動チェックする

Eclipse Checkstyleプラグインの導入方法、設定ファイルの作成、Google StyleやSun Styleの適用、チーム共有までを解説します。

一言結論

CheckstyleをEclipseに導入してチーム共有の設定ファイルをバージョン管理に含めることで、コーディング規約をコンパイル前にリアルタイムで全員に強制できる。

Checkstyle とは

Java のコーディング規約を自動チェックするツールです。インデント、命名規則、Javadoc の有無、行の長さなどをリアルタイムで検出します。

Eclipse プラグインのインストール

Help > Eclipse Marketplace で「Checkstyle」を検索し、Eclipse Checkstyle Plugin をインストールします。

インストール後、Eclipse を再起動します。

プロジェクトへの適用

  1. プロジェクトを右クリック → Checkstyle > Activate Checkstyle
  2. プロジェクトのプロパティ → Checkstyle でルールセットを選択

設定ファイルの作成

Google Style を使う

Google の Java コーディングスタイルを適用するには、Google のチェック設定 XML を使います。

Window > Preferences > Checkstyle > New

  • Type: Remote Configuration
  • URL: https://raw.githubusercontent.com/checkstyle/checkstyle/master/src/main/resources/google_checks.xml

カスタム設定ファイル(例)

プロジェクトルートに checkstyle.xml を作成:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
    "https://checkstyle.org/dtds/configuration_1_3.dtd">

<module name="Checker">
    <property name="charset" value="UTF-8"/>
    <property name="severity" value="warning"/>

    <module name="TreeWalker">
        <!-- 命名規則 -->
        <module name="TypeName"/>          <!-- クラス名: UpperCamelCase -->
        <module name="MethodName"/>        <!-- メソッド名: lowerCamelCase -->
        <module name="LocalVariableName"/> <!-- ローカル変数: lowerCamelCase -->
        <module name="ConstantName"/>      <!-- 定数: UPPER_CASE -->

        <!-- 行の長さ -->
        <module name="LineLength">
            <property name="max" value="120"/>
        </module>

        <!-- インデント -->
        <module name="Indentation">
            <property name="basicOffset" value="4"/>
        </module>

        <!-- 不要なインポート -->
        <module name="UnusedImports"/>
        <module name="RedundantImport"/>

        <!-- 空の catch ブロック -->
        <module name="EmptyCatchBlock">
            <property name="exceptionVariableName" value="expected|ignore"/>
        </module>

        <!-- 等値比較の順序("literal".equals(var) の形を強制) -->
        <module name="EqualsAvoidNull"/>

        <!-- ブレースの必須化 -->
        <module name="NeedBraces"/>

        <!-- マジックナンバーの禁止 -->
        <module name="MagicNumber">
            <property name="ignoreNumbers" value="-1, 0, 1, 2"/>
        </module>
    </module>

    <!-- ファイルサイズ -->
    <module name="FileLength">
        <property name="max" value="500"/>
    </module>
</module>

よく使うチェックモジュール

モジュールチェック内容
MethodLengthメソッドの行数制限
ParameterNumber引数の数制限
CyclomaticComplexity循環複雑度
JavadocMethodJavadoc の有無
WhitespaceAround演算子周りの空白
FinalClassprivate コンストラクタのみのクラスに final
HideUtilityClassConstructorユーティリティクラスの設計確認

警告を抑制する

// 特定のチェックを抑制
@SuppressWarnings("checkstyle:MagicNumber")
private static final int MAGIC = 42;

// Checkstyle の抑制コメント
// CHECKSTYLE:OFF
int x = 12345;  // チェックされない
// CHECKSTYLE:ON

Maven と連携する

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <configLocation>checkstyle.xml</configLocation>
                <failsOnError>true</failsOnError>
                <consoleOutput>true</consoleOutput>
            </configuration>
            <executions>
                <execution>
                    <id>validate</id>
                    <phase>validate</phase>
                    <goals><goal>check</goal></goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
mvn checkstyle:check  # チェックのみ実行

チームで設定を共有する

checkstyle.xml をプロジェクトリポジトリに含め、Eclipse の設定を「Project Relative Configuration」に設定します。

Preferences > Checkstyle > New > Project Relative Configuration > Location: checkstyle.xml

これで全員が同じルールでチェックできます。

まとめ

Checkstyle を CI に組み込むと、コードレビューでの「スタイルの指摘」がなくなります。まずは簡単なルール(命名規則、行長、未使用 import)から始めて、段階的に厳しくしていくのがおすすめです。