アキはフリーランスのプログラマーです >> Java >> PMD
Sponsored link

このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース

PMD Strings ルール

文字列に関してのルールです。

これを使用すると、

System.getProperty("line.separator");

などで、よく引っかかります。(System変数は、最初に1度取得するべきなのだろうか?パフォーマンス的には0.1%早くなりそうだけど)

AvoidDuplicateLiterals(同じ文字、続いてるけど大丈夫?)

出力例

The same String literal appears 4 times in this file; the first occurrence is on line 42


一定回数、同じ文字列が続くと、引っかかります。

デフォルトで3回はOKで、4回目でダメになります。

コピーペーストで修正忘れた時用でしょうか。

たまたま、だよというときは工夫が必要でしょう。

//よくない例
setPerlPath("aaa");
setPerlPath("aaa");
setPerlPath("aaa");
setPerlPath("aaa");
//大丈夫な例
String value="aaa";
setPerlPath(value);
setPerlPath(value);
setPerlPath(value);
setPerlPath(value);

StringInstantiation(Stringはnewでインスタンス化しなくていい)

めったにやらないと思いますが。

ちなみに、new String("test"+".jpg")と言う風に書いてもダメです。

//よくない例
public class Foo {
 private String bar = new String("bar"); 
}

//いい例
public class Foo {
 private String bar = "bar";
}

StringInstantiation(StringをtoString()するな)

おそらく、StringBufferと明確に区別するためでしょうか。

こんな無駄なことをするでないと反応します。

//よくない例
public class Foo {
 private String baz() {
  String bar = "howdy";
  return bar.toString();
 }
}
//いい例
public class Foo {
 private String baz() {
  String bar = "howdy";
  return bar;
 }
}


このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース