PMD – Code Sizeルール・セット

コードサイズに関するルールセットです。
※PMD 3.9に対応しています。

NPathComplexity

NPath値を測定し、複雑なメソッドがないかチェックします。
チェック対象外とするNPath値の最小値を指定する場合は
<property name=”minimum” value=”200″ />
を指定します。
デフォルト値は200です。

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

ExcessiveMethodLength

行数が長過ぎるメソッドがないかチェックします。
チェック対象外とする行数の最小値を指定する場合は
<property name=”minimum” value=”100″ />
を指定します。
デフォルト値は100です。

public class Foo
{
    public void doSomething()
    {
        System.out.println("Hello world!");
        System.out.println("Hello world!");
        // …
    }
}

ExcessiveParameterList

メソッドのパラメータ数が多いものがないかチェックします。
チェック対象外とするパラメータ数の最小値を指定する場合は
<property name=”minimum” value=”10″ />
を指定します。
デフォルト値は10です。

public class Foo
{
    // パラメータが10個以上あるのでNG
    public void addData(int p0, int p1, int p2, int p3, int p4, int p5,
        int p6, int p7, int p8, int p9, int p10) {
    }
}

ExcessiveClassLength

行数が長過ぎるクラスがないかチェックします。
チェック対象外とする行数の最小値を指定する場合は
<property name=”minimum” value=”1000″ />
を指定します。
デフォルト値は1000です。

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

CyclomaticComplexity

Cyclomatic Complexity値が大きいメソッドがないかチェックします。
チェック対象外とするCyclomatic Complexity値の最小値を指定する場合は
<property name=”minimum” value=”10″ />
を指定します。
デフォルト値は10です。

// Cyclomatic Complexity = 12
public class Foo
{
1   public void example()
    {
2       if (a == b)
        {
3           if (a1 == b1)
            {
                fiddle();
            }
4           else if (a2 == b2)
            {
                fiddle();
            }
            else
            {
                fiddle();
            }
        }
5       else if (c == d)
        {
6           while (c == d)
            {
                fiddle();
            }
        }
7       else if (e == f)
        {
8           for (int n = 0; n < h; n++)
            {
                fiddle();
            }
        }
        else
        {
            switch (z)
            {
9               case 1:
                    fiddle();
                    break;
10              case 2:
                    fiddle();
                    break;
11              case 3:
                    fiddle();
                    break;
12              default:
                    fiddle();
                    break;
            }
        }
    }
}

ExcessivePublicCount

多くのpublicメソッド・フィールドが定義されているクラスがないかチェックします。
チェック対象外とするpublicメソッド・フィールド数の最小値を指定する場合は
<property name=”minimum” value=”45″ />
を指定します。
デフォルト値は45です。

public class Foo
{
    public String value;
    public Bar something;
    public Variable var;
    // …
    public void doWork()
    {
    }
    public void doMoreWork()
    {
    }
    public void doWorkAgain()
    {
    }
    // …
}

TooManyFields

多くのフィールドが定義されているクラスがないかチェックします。
チェック対象外とするフィールド数の最小値を指定する場合は
<property name=”minimum” value=”15″ />
を指定します。
デフォルト値は15です。

public class Person
{
    String one;
    int two;
    int three;
    // …
}

NcssMethodCount

NCSS(Non Comment Source Statements:コメント文を除くソース・コードの命令数)値が高いメソッドがないかチェックします。
チェック対象外とするNCSS値の最小値を指定する場合は
<property name=”minimum” value=”100″ />
を指定します。
デフォルト値は100です。

public class Foo extends Bar
{
    public int methd()
    {
        super.methd();
        // …
        return 1;
    }
}

NcssTypeCount

NCSS値が高いクラスがないかチェックします。
チェック対象外とするNCSS値の最小値を指定する場合は
<property name=”minimum” value=”1500″ />
を指定します。
デフォルト値は1500です。

public class Foo extends Bar
{
    public Foo()
    {
        // …
        super();
        super.foo();
    }
}

NcssConstructorCount

NCSS値が高いコンストラクタがないかチェックします。
チェック対象外とするNCSS値の最小値を指定する場合は
<property name=”minimum” value=”100″ />
を指定します。
デフォルト値は100です。

public class Foo extends Bar
{
    public Foo()
    {
        super();
        // …
        super.foo();
    }
}

コメント

Copied title and URL