Sponsored link
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; } }