- ベストアンサー
バグチェックツール
以下のようなやってはいけないロジックをチェックするツール(eclipseのプラグイン)を探しています。 integerInstanceはInteger型のクラス //equalメソッドを使わずインスタンス比較している。 if(integerInstance1 == integerInstance2){ } よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CheckStyleは見た目のチェックですよね。 内部ロジックの不具合を発見するのは、FindBugsが定番だと思います。 「==」を使用してのインスタンスの比較はもちろんさまざまなチェックを行ってくれます。 私の会社の最近のPJでは、CheckStyleとFindBugsを組合わせて使用し品質保証の足しにしています。両者のチェックを全てクリアすることが最低限の品質条件となっています。
その他の回答 (1)
- kazsharp
- ベストアンサー率37% (16/43)
コードのスタイルをチェックするようなプラグイン http://sourceforge.net/projects/eclipse-cs/ などはあるようですが、「やってはいけないロジックをチェックする」というのとは少し違うようです。 ただ、気になるのは、オブジェクトの比較をequalsメソッドを使わないというのは「やってはいけないロジック」ではありません。 Stringオブジェクトの比較で演算子を使うと「文字列の内容が同じ」なのにオブジェクトが異なる場合に「false」と判定されることを心配してのことでしょうが定数やtype-safe enumなどではむしろ「equalsメソッドよりも比較演算子」を使うほうが効率がよくなります。 例えば public static final String KEY_COMMAND = "keyCommand"; というような定数が合った場合、 String parameter = getParameter(0); if (parameter.equals(KEY_COMMAND) { // } とするよりも String parameter = getParameter(0); if (parameter == KEY_COMMAND) { /// } のほうが一般的にはより良いコードだと言えます。仮に「いや、そういう場合でもequalsメソッドを使うべきだ」という方針でも「やってはいけない」というのは言いすぎのような気がします。
お礼
Integer型は一般的にequalsメソッドを使用すべきと思います。なぜなら同じインスタンスかどうかを比較する意味がないからです。 また、String型はequalsメソッドを使用するべきと思います。==比較する場合は、aa.intern() == bb.intern()としなければならなかったと思います。 ただ、このコードはトリッキーなのでやはりequalsメソッドが良いと思います。 大変参考になりました、ありがとうございました。
お礼
大変参考になりました、ありがとうございました。 >私の会社の最近のPJでは、CheckStyleとFindBugsを組合わせて使用し品質保証の足しにしています。両者のチェックを全てクリアすることが最低限の品質条件となっています。 おお、優秀な会社でね。私のところは二つともしていません。