Checkstyle チェック項目ーRegexp

Checkstyleチェック項目:Regexp

チェック実行例をより詳しく知りたい場合は公式を参照のこと。

ver 10.3.1

Regexp

指定されたパターンがファイル内に存在するか、存在する回数が設定値以下か、存在しないかをチェックする。

プロパティ

プロパティ デフォルト値 説明
format Pattern "^$" チェックする正規表現
message String null 違反の通知に使用するメッセージ
illegalPattern boolean false true:指定のパターンが存在することをチェック
false:指定のパターンが存在しないことをチェック
duplicateLimit int 0 負の値:重複をチェックしない
正の値:許容される重複の最大数
errorLimit int 100 チェックが中断されるまでの最大違反回数
ignoreComments boolean false コメントをチェック対象外とするかどうか

チェック設定例

プロパティ設定なし

<module name="Regexp"/>

プロパティ設定あり

<module name="Regexp">
  <property name="format" value="// This code is copyrighted\n// \(c\) MyCompany"/>
</module>

チェック実行例

プロパティ設定なし

プロパティ未指定の場合はチェックは実施されない

プロパティ設定あり

// 以下の2行が存在しない場合NG
// This code is copyrighted
// (c) MyCompany

RegexpMultiline

指定されたパターンが、任意のファイルタイプで複数行に渡ってマッチするかどうかをチェックする。

プロパティ

プロパティ デフォルト値 説明
format Pattern "$." チェックする正規表現
message String null 違反の通知に使用するメッセージ
ignoreCase boolean false 検索時に大文字小文字を無視するかどうか
minimum int 0 各ファイルで必要な最小パターン一致数
maximum int 0 各ファイルで必要な最大パターン一致数
matchAcrossLines boolean false 複数行にまたがる式をマッチングさせるかどうか
fileExtensions String[] all files チェック対象のファイル拡張子

チェック設定例

プロパティ設定なし

<module name="RegexpMultiline"/>

プロパティ設定あり

<module name="RegexpMultiline">
    <property name="matchAcrossLines" value="true"/>
    <property name="format" value="System\.out.*?print\("/>
</module>

チェック実行例

プロパティ設定なし

プロパティ未指定の場合はチェックは実施されない

プロパティ設定あり

void foo() {
    // NG
    System.out.print("Example");
    // OK
    System.err.println("Example");
    
    // NG
    System.out.print 
        ("Example");
    // OK
    System.err.println
        ("Example");
}

RegexpOnFilename

ファイルやフォルダーのパスに基づいて、指定されたパターンが一致するかどうかをチェックする。

また、他のチェックで確認できない特定の命名パターン(例:プロパティ、xml など)にファイル名が一致するかどうかの確認にも使用可能。

デフォルトではスペースを含むファイル名がNGとなり検出される。

プロパティ

プロパティ デフォルト値 説明
folderPattern Pattern null フォルダパスと照合する正規表現
fileNamePattern Pattern null ファイル名と照合する正規表現
match boolean true true:一致するとNG
false:不一致だとNG
ignoreFileNameExtensions boolean false ファイル名のマッチングにおいて、ファイル拡張子を無視するかどうか
fileExtensions String[] all files チェック対象のファイル拡張子

チェック設定例

プロパティ設定なし

<module name="RegexpOnFilename"/>

プロパティ設定あり

<module name="RegexpOnFilename">
    <property name="fileNamePattern" value="\.gif$"/>
</module>

チェック実行例

プロパティ設定なし

// OK
src/xdocs/config_regexp.xml
// NG
src/xdocs/"config regexp".xml

プロパティ設定あり

// OK
src/site/resources/images/favicon.png
// OK
src/site/resources/images/logo.jpg
// NG
src/site/resources/images/groups.gif 

RegexpSingleline

指定されたパターンが、任意のファイルタイプの1行にマッチするかどうかをチェックする。

プロパティ

プロパティ デフォルト値 説明
format Pattern "$." チェックする正規表現
message String null 違反の通知に使用するメッセージ
ignoreCase boolean false 検索時に大文字小文字を無視するかどうか
minimum int 0 各ファイルで必要な最小パターン一致数
maximum int 0 各ファイルで必要な最大パターン一致数
fileExtensions String[] all files チェック対象のファイル拡張子

チェック設定例

プロパティ設定なし

<module name="RegexpSingleline" />

プロパティ設定あり

<module name="RegexpSingleline">
    <property name="format" value="System.exit\("/>
    <property name="maximum" value="1"/>
</module>

チェック実行例

プロパティ設定なし

プロパティ未指定の場合はチェックは実施されない

プロパティ設定あり

class MyClass {
    void foo() {
        try {
            doSomething();
            System.exit(0);
        } catch (Exception e) {
            // NG `System.exit`は1回まで
            System.exit(1);
        }
    }
}

RegexpSinglelineJava

指定されたパターンがJavaファイル内の1行にマッチするかどうかをチェックする。

プロパティ

プロパティ デフォルト値 説明
format Pattern "$." チェックする正規表現
message String null 違反の通知に使用するメッセージ
ignoreCase boolean false 検索時に大文字小文字を無視するかどうか
minimum int 0 各ファイルで必要な最小パターン一致数
maximum int 0 各ファイルで必要な最大パターン一致数
ignoreComments boolean false コメントをチェック対象外とするかどうか

チェック設定例

プロパティ設定なし

<module name="RegexpSinglelineJava"/>

プロパティ設定あり

<module name="RegexpSinglelineJava">
    <property name="format" value="System\.out\.println"/>
    <property name="ignoreComments" value="true"/>
</module>

チェック実行例

プロパティ設定なし

プロパティ未指定の場合はチェックは実施されない

プロパティ設定あり

// NG
System.out.println("");

// OK
System.out.
println("");

// OK コメントは無視される
/* System.out.println */