メインコンテンツまでスキップ
に最終更新

Java コードのフォーマット規約

Apache Doris の Java コード(主に FE モジュール)は、通常 IDE で自動的にフォーマットします。このドキュメントでは、基本的なフォーマット規則と、IDE ごとの設定方法を説明します。CI パイプラインでは formatter-check によってコードのフォーマットを検証します。

インポート順序の規則​

インポート文は次のグループ順に並べ、各グループの間に空行を一行入れてください。

org.apache.doris
<blank line>
third party package
<blank line>
standard java package
<blank line>

追加の規則は次のとおりです。

規則説明
import * を使用しない各クラスを明示的にインポートする必要があります
import static を使用しない静的インポートは許可されていません

コンパイル時の Checkstyle チェック​

maven でコンパイルすると、デフォルトで Checkstyle のチェックが実行されるため、コンパイルに少し時間がかかります。チェックをスキップするには、次のコマンドを使用します。

mvn clean install -DskipTests -Dcheckstyle.skip

CI の formatter-check ではコードのフォーマットが検証されます。ローカルでチェックをスキップするのは、開発やデバッグのときだけにしてください。PR を提出する前に、コードがフォーマット規約に準拠していることを確認してください。

Checkstyle プラグインの設定​

IDEA で Checkstyle を設定する​

  1. 設定画面で Checkstyle-IDEA プラグインをインストールします。
  2. Tools -> Checkstyle に移動し、Configuration File で Use a local Checkstyle file をクリックします。
  3. プロジェクトのルートディレクトリにある fe/check/checkstyle/checkstyle.xml を選択します。
  4. Checkstyle のバージョンが 9.3 以降であることを確認します(最新バージョンを推奨します)。

設定後は、Checkstyle-IDEA プラグインを使ってコードの Checkstyle チェックを実行できます。

VS Code で Checkstyle を設定する​

  1. Checkstyle for Java プラグインをインストールします。
  2. Java のリンティングに関する公式ドキュメントの説明とアニメーションに従って設定します。

IDEA でのコードフォーマット​

自動フォーマットの設定​

IDEA の自動フォーマット機能の使用を推奨します。

  1. Preferences -> Editor -> Code Style -> Java に移動します。
  2. 設定アイコンの Import Scheme をクリックし、IntelliJ IDEA code style XML を選択します。
  3. プロジェクトのルートディレクトリにある build-support/IntelliJ-code-format.xml を選択します。

コードの並べ替え​

Checkstyle は、クラスとインターフェースの宣言に従ってコード内の宣言順序をチェックします。

上記の build-support/IntelliJ-code-format.xml をインポートした後、Code/Rearrange Code を使うと自動的に並べ替えられます。

未使用のインポートを自動的に削除する​

目的操作
未使用のインポートだけを削除するデフォルトのショートカット CTRL + ALT + O を使用します
保存時に自動で削除と並べ替えを行うPreferences -> Editor -> General -> Auto Import -> Optimize Imports on the Fly をオンにします

FAQ​

Q: CI で formatter-check が失敗した場合は、どう調査すればよいですか?

IDEA または Checkstyle プラグインを使ってローカルでチェックを実行してください。インポート順序、命名規則、宣言順序が fe/check/checkstyle/checkstyle.xml の要件を満たしていることを確認してから、再度提出してください。

Q: ローカルで Checkstyle をスキップすると、PR のマージに影響しますか?

はい。CI では引き続き formatter-check が実行されます。ローカルの -Dcheckstyle.skip オプションは、開発時のビルドを速くするためだけのものです。最終的なコードは Checkstyle に合格する必要があります。