ImportOrder
検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 3.2 |
インポートの順番やグループ分けをチェックする。
チェック内容には以下のものがある。
- インポートグループが特定の順序になっていること
- 各グループの間に空白行があること
- 各グループが空白行やコメントで内部的に分離されていないこと
- 各グループ内のインポートが辞書順であること
- インポート間の比較が大文字と小文字を区別されていること
- 型インポートとstaticインポートの相対的な順序を保証すること
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
option | ImportOrderOption | under | 型のインポートとstaticインポートの相対的な順序に関するポリシー | 5.0 |
groups | Pattern[] |
{} | 型インポートグループのリスト すべてのグループは、共通のプレフィックス文字列、またはスラッシュで囲まれた正規表現 (例: /regexp/) によって識別される。 どのグループにもマッチしない型インポートは、最後に自動で追加されるグループに分類される。したがって、タイプグループの空リスト(デフォルト値)は、すべての型インポートが1つのグループに属することを意味する |
3.2 |
ordered | boolean | true | 各グループ内の型のインポートをソートするかどうか staticインポートには影響しない |
3.2 |
separated | boolean | false | 型のインポートグループを、少なくとも1行の空白行またはコメントで区切り、 内部で区切らないようにするかどうか staticインポートには影響しない |
3.2 |
separatedStaticGroups | boolean | false | sstaticインポートグループを、少なくとも1行の空白行またはコメントで区切り、内部で区切らないようにするかどうか optionがtopまたはbottomに設定され、staticGroupsが有効な場合にのみ有効 |
8.12 |
caseSensitive | boolean | true | 文字列比較を大文字小文字を区別して行うかどうか 大文字小文字を区別したソートは、ASCIIのソート順となる。これは、型インポートとstaticインポートの両方に影響する。 |
3.3 |
staticGroups | Pattern[] |
{} | staticインポートグループのリスト 各グループは共通のプレフィックス文字列、またはスラッシュで囲まれた正規表現 (例: /regexp/) によって識別される。 どのグループにも一致しないすべてのstaticインポートは、最後に自動で追加されるグループに分類される。したがって、staticグループの空のリスト(デフォルト値)は、すべてのstaticインポートが1つのグループに属することを意味する。このプロパティは、optionがtopまたはbottomに設定されている場合にのみ有効 |
8.12 |
sortStaticImportsAlphabetically | boolean | false | グループ内で上下に配置されたstaticインポートをソートするかどうか | 6.5 |
useContainerOrderingForStatic | boolean | false | staticインポートにコンテナ順序(Eclipse IDE用語)を使用するかどうか | 7.1 |
〇ImportOrderOptionには以下の値が設定可能
値 | 説明 |
---|---|
top | すべてのstaticインポートが一番上に配置される |
above | staticインポートは同一クラスのローカルインポートより上に配置する |
inflow | すべてのstaticインポートは、staticインポートでないものと同様に処理する |
under | staticインポートは同一クラスのローカルインポートより下に配置する |
bottom | すべてのstaticインポートが一番下に配置される |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="ImportOrder"/> </module> </module>
チェック実行例
import java.io.IOException; import java.net.URL; // NG 余計な分離(空行)がある import java.io.IOException; import javax.net.ssl.TrustManager; import javax.swing.JComponent; import org.apache.http.conn.ClientConnectionManager; // NG 'java' は 'org' より前に記述する import java.util.Set; // NG 'com'は一番上に記述するべき import com.neurologic.http.HttpClient; import com.neurologic.http.impl.ApacheHttpClient;
プロパティ設定あり
Eclipse のデフォルトのフォーマッター設定と一致するようなチェックを設定例
- staticインポートのグループが一番上にある
- タイプのインポートのグループ。「java」と「javax」パッケージを最初に、次に「org」、そして他のすべてのインポートの順に並べる
- インポートはグループ内でソートされる
- グループは少なくとも1行の空白行で区切られ、内部では区切られていない
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="ImportOrder"> <property name="groups" value="/^java\./,javax,org"/> <property name="ordered" value="true"/> <property name="separated" value="true"/> <property name="option" value="above"/> <property name="sortStaticImportsAlphabetically" value="true"/> </module> </module> </module>
チェック実行例
import static java.lang.System.out; import static java.lang.Math; // NG SystemよりMathを上に書く import java.io.IOException; import java.net.URL; // NG 無駄な空行 import java.security.KeyManagementException; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; // NG 同じグループ内で空行を入れない import org.apache.http.conn.ClientConnectionManager; public class SomeClass { }