MethodName
検証環境
Checkstyleバージョン:10.8.0
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 3.0 |
メソッド名が指定の正規表現にマッチしているがどうかをチェックする。
クラス名と同じ名前のメソッドが存在するかあるかどうかもチェックする。デフォルトではメソッド名とクラス名が同じものは許可されない。
オーバーライドされたメソッドの名前はチェック対象外。
Javaでは、クラスと同じ名前のメソッドを持つことは可能である。クラスと同名のメソッドは、コンストラクタと混同されやすいためチェックをしている。
オーバーライドされたメソッドの名前をチェックしないのは、開発者がそのようなメソッドの名前を変更する選択肢を持っていないためである。
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
format | Pattern | "^[a-z][a-zA-Z0-9]*$" |
メソッド名の正規表現 | 3.0 |
allowClassName | boolean | false | クラス名と同じ名前のメソッドを許可するかどうか | 5.0 |
applyToPublic | boolean | true | publicメソッドにチェックを適用するかどうか | 5.1 |
applyToProtected | boolean | true | protectedメソッドにチェックを適用するかどうか | 5.1 |
applyToPackage | boolean | true | package-privateメソッドにチェックを適用するかどうか | 5.1 |
applyToPrivate | boolean | true | privateメソッドにチェックを適用するかどうか | 5.1 |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodName"/> </module> </module>
チェック実行例
class MyClass { // OK public void firstMethod1() { } // OK protected void secondMethod() { } // NG メソッド名の正規表現にマッチしない private void ThirdMethod() { } // NG メソッド名の正規表現にマッチしない public void fourth_Method4() { } // NG クラス名と同じメソッド名 public void MyClass() { } }
プロパティ設定あり
format
メソッド名の正規表現
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodName"> <property name="format" value="^A[a-z][a-zA-Z0-9]*$"/> </module> </module> </module>
チェック実行例
class MyClass { // NG メソッド名の正規表現にマッチしない public void firstMethod1() { } // NG メソッド名の正規表現にマッチしない protected void secondMethod() { } // NG メソッド名の正規表現にマッチしない private void ThirdMethod() { } // NG メソッド名の正規表現にマッチしない public void fourth_Method4() { } // NG クラス名と同じメソッド名 public void MyClass() { } }
allowClassName
クラス名と同じ名前のメソッドを許可するかどうか
デフォルト:false
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodName"> <property name="allowClassName" value="true"/> </module> </module> </module>
チェック実行例
class MyClass { // OK public void firstMethod1() { } // OK protected void secondMethod() { } // NG メソッド名の正規表現にマッチしない private void ThirdMethod() { } // NG メソッド名の正規表現にマッチしない public void fourth_Method4() { } // OK 「allowClassName=true」なのでOK public void MyClass() { } }
applyToPublic
publicメソッドにチェックを適用するかどうか
デフォルト:true
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodName"> <property name="applyToPublic" value="false"/> </module> </module> </module>
チェック実行例
class MyClass { // OK 「applyToPublic=false」なのでチェック対象外 public void FirstMethod1() { } // NG メソッド名の正規表現にマッチしない protected void SecondMethod() { } // NG メソッド名の正規表現にマッチしない void ThirdMethod() { } // NG メソッド名の正規表現にマッチしない private void FourthMethod() { } // NG クラス名と同じメソッド名 public void MyClass() { } }
applyToProtected
Protectedメソッドにチェックを適用するかどうか
デフォルト:true
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodName"> <property name="applyToProtected" value="false"/> </module> </module> </module>
チェック実行例
class MyClass { // NG メソッド名の正規表現にマッチしない public void FirstMethod1() { } // OK 「applyToProtected=false」なのでチェック対象外 protected void SecondMethod() { } // NG メソッド名の正規表現にマッチしない void ThirdMethod() { } // NG メソッド名の正規表現にマッチしない private void FourthMethod() { } // NG クラス名と同じメソッド名 public void MyClass() { } }
applyToPackage
Package-Privateメソッドにチェックを適用するかどうか
デフォルト:true
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodName"> <property name="applyToPackage" value="false"/> </module> </module> </module>
チェック実行例
class MyClass { // NG メソッド名の正規表現にマッチしない public void FirstMethod1() { } // NG メソッド名の正規表現にマッチしない protected void SecondMethod() { } // OK 「applyToPackage=false」なのでチェック対象外 void ThirdMethod() { } // NG メソッド名の正規表現にマッチしない private void FourthMethod() { } // NG クラス名と同じメソッド名 public void MyClass() { } }
applyToPrivate
Privateメソッドにチェックを適用するかどうか
デフォルト:true
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodName"> <property name="applyToPrivate" value="false"/> </module> </module> </module>
チェック実行例
class MyClass { // NG メソッド名の正規表現にマッチしない public void FirstMethod1() { } // NG メソッド名の正規表現にマッチしない protected void SecondMethod() { } // NG メソッド名の正規表現にマッチしない void ThirdMethod() { } // OK 「applyToPrivate=false」なのでチェック対象外 private void FourthMethod() { } // NG クラス名と同じメソッド名 public void MyClass() { } }