| ルールのカテゴリ | オープンソース | Jtest | 網羅率※ | 備考 |
|---|---|---|---|---|
| フロー解析※ | 15 | 47 | 31.9% | Jtestではクラスやファイルをまたがった処理を解析し問題を検出する。FindBugsはバイトコード解析を行うものの、精度が大きく違うため、比較することができない。 |
| Bean | 1 | 5 | 20.0% | |
| 重複コード | 2 | 6 | 33.3% | |
| コーディング規約 | 51 | 107 | 47.7% | |
| EJB | 4 | 61 | 6.6% | フレームワーク独自のルールはOSSが少ない。 |
| 例外 | 6 | 19 | 31.6% | |
| フォーマット | 29 | 36 | 80.6% | フォーマット系はOSSの網羅率が高い。 |
| ガベージコレクション | 4 | 12 | 33.3% | |
| グローバル解析 | 4 | 22 | 18.2% | |
| Hibernate | 0 | 13 | 0.0% | フレームワーク独自のルールはOSSが少ない。 |
| 初期化 | 5 | 14 | 35.7% | |
| 国際化 | 3 | 17 | 17.6% | |
| Java Doc | 14 | 25 | 56.0% | |
| JDBC | 3 | 10 | 30.0% | |
| JUnit | 16 | 27 | 59.3% | |
| メトリクス | 0 | 23 | 0.0% | メトリクスに関するルールはOSSでは少ない。 |
| モバイル | 0 | 17 | 0.0% | モバイル関連のルールはJtestと重複しない。 |
| 命名規則 | 18 | 38 | 47.4% | |
| オブジェクト指向プログラミング | 11 | 35 | 31.4% | |
| 最適化 | 29 | 56 | 51.8% | |
| バグの可能性 | 75 | 139 | 54.0% | |
| 移植性 | 3 | 9 | 33.3% | |
| プロパティファイル | 2 | 17 | 11.8% | |
| セキュリティ | 11 | 146 | 7.5% | セキュリティ関連の網羅率は低い。 |
| シリアライズ | 10 | 17 | 58.8% | |
| サーブレット | 2 | 17 | 11.8% | |
| Spring | 0 | 11 | 0.0% | フレームワーク独自のルールはOSSが少ない。 |
| Struts | 1 | 30 | 3.3% | フレームワーク独自のルールはOSSが少ない。 |
| スレッド | 24 | 49 | 49.0% | |
| 未使用コード | 16 | 27 | 59.3% | |
| XML | 0 | 2 | 0.0% |
| Category | 概要 | 対応状況 | Jtest 10.2.2 Rule ID | 備考 |
|---|---|---|---|---|
| Bad practice | equals メソッドは引数の型を仮定するべきではない | X | ||
| Bad practice | ビット演算の符号をチェックする | X | ||
| Bad practice | Cloneable を実装したクラスが clone メソッドを定義していないか、使用していない | ○ | Cloneable クラスでは clone() throws CloneNotSupportedException を宣言する [CODSTA.OIM.CLONE-3] | |
| Bad practice | clone メソッドが super.clone() を呼び出していない | ○ | すべての clone() メソッドで super.clone() を呼び出す [CODSTA.EPC.SCLONE-1] |
|
| Bad practice | Cloneable を実装していないクラスが clone メソッドを定義している | ○ | clone() メソッドを使用するのは、Cloneable インターフェイスの実装のためだけにする [CODSTA.OIM.CLONE2-3] | |
| Bad practice | 既知の定数の雑な値を見つける | X | ||
| Bad practice | 抽象クラスは共変な compareTo メソッドを定義している | ○ | オーバーライドされるメソッドが引数型の違いによる予定外の共変ではないようにする [PB.CUB.IMC-3] | |
| Bad practice | compareTo()/compare() は間違って float または double 値を処理する | X | ||
| Bad practice | compareTo()/compare() は Integer.MIN_VALUE を返す | X | ||
| Bad practice | 共変な compareTo メソッドの定義 | ○ | オーバーライドされるメソッドが引数型の違いによる予定外の共変ではないようにする [PB.CUB.IMC-3] | |
| Bad practice | 例外を捨てているかもしれないメソッド | ○ | キャッチした例外を catch ブロックで必ず使用する [UC.UCATCH-3] | |
| Bad practice | 例外を無視しているかもしれないメソッド | ○ | キャッチした例外を catch ブロックで必ず使用する [UC.UCATCH-3] | |
| Bad practice | エントリセットの要素を加えることは、Entry オブジェクトの再利用のために失敗するかもしれない | X | ||
| Bad practice | Random オブジェクトが作成され1度しか使われない | X | ||
| Bad practice | コレクションを消去するために removeAll メソッドを使用しない | X | ||
| Bad practice | System.exit(...) を呼び出しているメソッド | ○ | System.exit() を呼び出してはいけない [CODSTA.BP.EXIT-3] | |
| Bad practice | 危険なメソッド runFinalizersOnExit を呼び出しているメソッド | ○ | 安全ではない非推奨のメソッド Thread および Runtime を呼び出さない [TRS.THRD-2] | |
| Bad practice | String パラメータを == や != を使用して比較している | ○ | オブジェクト同士の比較に '==' または '!=' を使用しない [PB.CUB.UEIC-2] | |
| Bad practice | String オブジェクトを == や != を使用して比較している | ○ | オブジェクト同士の比較に '==' または '!=' を使用しない [PB.CUB.UEIC-2] | |
| Bad practice | 抽象クラスは共変な equals メソッドを宣言している | ○ | オーバーライドされるメソッドが引数型の違いによる予定外の共変ではないようにする [PB.CUB.IMC-3] | |
| Bad practice | equals メソッドは互換性のないオペランドをチェックしている | X | ||
| Bad practice | compareTo(...) メソッドを定義して Ob-ject.equals() を使用しているクラス | X |
| FindBugs、FindSecurityBugs、Checkstyle、PMDとJtestのルールマッピング情報をすべて含んだ、完全版資料のダウンロードをご希望の場合は以下URLよりダウンロードいただけます。 その他、ご不明点等ございましたらお問い合わせ先よりご連絡ください。 FindBugs、Checkstyle、PMDとJtestのルール比較資料完全版ダウンロード |
システムエンジニアリング事業部
ソフトウェアエンジニアリング営業部