PMD – Namingルール・セット


名前付けに関するルールセットです。
※PMD 3.9に対応しています。

ShortVariable

フィールド名、ローカル変数名、パラメータ名が短すぎないかチェックします。
3文字未満がチェック対象となります。

public class Something
{
    // フィールド名が短すぎるのでNG!
    private int q = 15;

    // パラメータ名が短すぎるのでNG!
    public static void main(String as[])
    {
        // ローカル変数名が短すぎるのでNG!
        int r = 20 + q;

        // forステートメント中の変数はチェック対象外です
        for (int i = 0; i < 10; i++)
        {
            r += q;
        }
    }
}

LongVariable

フィールド名、ローカル変数名、パラメータ名が長すぎないかチェックします。
名称の最大桁数を指定する場合は
<property name="minimum" value="17" />
を指定します。
デフォルト値は17です。

public class Something
{
    // フィールド名が長すぎるのでNG!
    int reallyLongIntName = -3;

    public static void main(String argumentsList[])
    {
        // フィールド名が長すぎるのでNG!
        int otherReallyLongName = -5;

        // forステートメント中もチェック対象です
        // フィールド名が長すぎるのでNG!
        for (int interestingIntIndex = 0; interestingIntIndex < 10; interestingIntIndex ++ )
        {
            // …
        }
    }
}

ShortMethodName

メソッド名が短すぎないかチェックします。
3文字未満がチェック対象となります。

public class ShortMethod
{
    // メソッド名が短すぎるのでNG!
    public void a(int i)
    {
        // …
    }
}

VariableNamingConventions

指定した命名規則に従っていない変数がないかチェックします。
接頭辞・接尾辞を指定する場合は
<property name="staticPrefix" value="static変数の接頭辞" />
<property name="staticSuffix" value="static変数の接尾辞" />
<property name="memberPrefix" value="メンバ変数の接頭辞" />
<property name="memberSuffix" value="メンバ変数の接尾辞" />
を指定します。

public class Foo
{
    public static final int MY_NUM = 0;
    public String myTest = "";
    DataModule dmTest = new DataModule();
}

MethodNamingConventions

小文字で始まっていないメソッド名やアンダースコアを含んでいるメソッド名がないかチェックします。

public class Foo
{
    public void fooStuff()
    {
        // …
    }
}

ClassNamingConventions

大文字で始まっていないクラス名がないかチェックします。

public class Foo
{
    // …
}

AbstractNaming

“Abstract”から始まっていない抽象クラス名がないかチェックします。

// AbstractFooとすべきです
public abstract class Foo
{
    // …
}

AvoidDollarSigns

変数名、メソッド名、クラス名、インターフェイス名に$が含まれていないかチェックします。

// $が含まれているのでNG!
public class Fo$o
{
    // …
}

MethodWithSameNameAsEnclosingClass

クラス名と同じメソッド名がないかチェックします。

public class MyClass
{
    // クラス名と同じメソッド名なのでNG!
    public void MyClass()
    {
        // …
    }

    // コンストラクタなので問題ない
    public MyClass()
    {
        // …
    }
}

SuspiciousHashcodeMethodName

hashCode()メソッドと間違えてそうなメソッドがないかチェックします。

public class Foo
{
    // hashCode()と間違っている恐れがあるのでNG!
    public int hashcode()
    {
        // …
    }
}

SuspiciousConstantFieldName

全て大文字のフィールド名がないかチェックします。
Sunの命名規則では、定数の場合に全て大文字で宣言することになっています。

public class Foo
{
    // 定数であるならfinal double PI = 3.16とすべきなのでNG!
    double PI = 3.16;
}

SuspiciousEqualsMethodName

equals()メソッドと間違えてそうなメソッドがないかチェックします。

public class Foo
{
    // equals()の戻り値はbooleanとすべきなのでNG!
    public int equals(Object o)
    {
        // …
    }

    // equals()のパラメータはObjectとすべきなのでNG!
    public boolean equals(String s)
    {
        // …
    }
}

AvoidFieldNameMatchingTypeName

クラス名と間違えそうなフィールド名がないかチェックします。

public class Foo extends Bar
{
    // クラス名と似ているので別の名前にした方がよい
    int foo;
}

AvoidFieldNameMatchingMethodName

メソッド名と間違えそうなフィールド名がないかチェックします。

public class Foo
{
    // メソッド名と同じなので別の名前にした方がよい
    Object bar; void bar()
    {
        // …
    }
}

AvoidNonConstructorMethodsWithClassName

コンストラクタ以外でクラス名と同じメソッド名がないかチェックします。
MethodWithSameNameAsEnclosingClassと同じ?

public class Foo
{
    // コンストラクタでないクラス名と同じメソッドなのでNG!
    public void Foo()
    {
        // …
    }
}

NoPackage

パッケージが記述されていないクラスやインターフェイスがないかチェックします。

// パッケージが記述されていないのでNG!
public class ClassInDefaultPackage
{
    // …
}

PackageCase

大文字で記述されているパッケージがないかチェックします。

// パッケージが大文字で記述されているのでNG!
package com.MyCompany;

public class SomeClass
{
    // …
}

MisleadingVariableName

フィールド名以外で“m_”で始まる名称がないかチェックします。

public class Foo
{
    // フィールド名なのでOK!
    private int m_foo;

    // パラメータ名なのでNG!
    public void bar(String m_baz)
    {
        // ローカル変数名なのでNG!
        int m_boz = 42;
    }
}

関連記事

  1. コメント 0

  1. トラックバック 0

return top