コードサイズに関するルールセットです。
※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();
}
}
コメント