Checkstyle Javaルール

CheckstyleのJavaルールについて1つずつまとめます

IllegalImport

CheckStyle公式ドキュメント

検証環境

Checkstyleバージョン:10.3.3
Javaバージョン:17


チェック概要

チェック追加バージョン
Checkstyle 3.0

不正なパッケージセットからのインポートがないかチェックする。
デフォルトでは、sun.* パッケージを拒否するチェックが行われる。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
illegalPkgs String[] sun 不正とするパッケージ。 regexpプロパティがfalseの場合、 importがパッケージの一部であるかどうかをチェックし、 trueの場合は正規表現として解釈される 3.0
illegalClasses String[] {} 不正とするクラス名。 regexpプロパティがfalseの場合、 インポートがクラス名と等しいかどうかをチェックし、 trueの場合は正規表現として解釈される 7.8
regexp boolean false illegalPkgs と illegalClasses を正規表現として解釈するかどうか 7.8

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="IllegalImport"/>
    </module>
</module>

チェック実行例

import java.io.*;
import java.lang.ArithmeticException;
import java.sql.Connection;
import java.util.List;
import java.util.Enumeration;
import java.util.Arrays;
// NG
import sun.applet.*;

public class InputIllegalImport { }

プロパティ設定あり

illegalPkgs

不正とするパッケージ。 regexpプロパティがfalseの場合、 importがパッケージの一部であるかどうかをチェックし、 trueの場合は正規表現として解釈される

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="IllegalImport">
            <property name="illegalPkgs" value="java.io, java.sql"/>
        </module>
    </module>
</module>

チェック実行例

// NG
import java.io.*;
import java.lang.ArithmeticException;
// NG
import java.sql.Connection;
import java.util.List;
import java.util.Enumeration;
import java.util.Arrays;
import sun.applet.*;

public class InputIllegalImport {
}

illegalClasses

不正とするクラス名。 regexpプロパティがfalseの場合、 インポートがクラス名と等しいかどうかをチェックし、 trueの場合は正規表現として解釈される

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="IllegalImport">
            <property name="illegalClasses" value="java.util.Date, java.sql.Connection"/>
        </module>
    </module>
</module>

チェック実行例

import java.io.*;
import java.lang.ArithmeticException;
// NG
import java.sql.Connection;
import java.util.List;
import java.util.Enumeration;
import java.util.Arrays;
// NG
import java.util.Date;
import sun.applet.*;

public class InputIllegalImport {
}