信頼度ランク
| 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 を再起動します。
プロジェクトへの適用
- プロジェクトを右クリック →
Checkstyle > Activate Checkstyle - プロジェクトのプロパティ →
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 | 循環複雑度 |
JavadocMethod | Javadoc の有無 |
WhitespaceAround | 演算子周りの空白 |
FinalClass | private コンストラクタのみのクラスに 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)から始めて、段階的に厳しくしていくのがおすすめです。