FindBugs 実施ルール

FindBugs Rule v3.0.1 の自分用まとめ
http://findbugs.sourceforge.net/bugDescriptions.html
お見せできるものではないです。
その内に整理します…

# Summary
| Description | Category |
|:--|:--|
| BC: equals メソッドは引数の型を仮定するべきではない | Bad practice |
| BIT: ビット演算の符号をチェックする | Bad practice |
| CN: Cloneable を実装したクラスが clone メソッドを定義していないか、使用していない | Bad practice |
| CN: clone メソッドが super.clone() を呼び出していない | Bad practice |
| CN: Cloneable を実装していないクラスが clone メソッドを定義している | Bad practice |
| CNT: 既知の定数の雑な値を見つける | Bad practice |
| Co: 抽象クラスは共変な compareTo メソッドを定義している | Bad practice |
| Co: compareTo()/compare() は間違って float または double 値を処理する | Bad practice |
| Co: compareTo()/compare() は Integer.MIN_VALUE を返す | Bad practice |
| Co: 共変な compareTo メソッドの定義 | Bad practice |
| DE: 例外を捨てているかもしれないメソッド | Bad practice |
| DE: 例外を無視しているかもしれないメソッド | Bad practice |
| DMI: エントリセットの要素を加えることは、Entry オブジェクトの再利用のために失敗するかもしれない | Bad practice |
| DMI: Random オブジェクトが作成され1度しか使われない | Bad practice |
| DMI: コレクションを消去するために removeAll メソッドを使用しない | Bad practice |
| Dm: System.exit(...) を呼び出しているメソッド | Bad practice |
| Dm: 危険なメソッド runFinalizersOnExit を呼び出しているメソッド | Bad practice |
| ES: String パラメータを == や != を使用して比較している | Bad practice |
| ES: String オブジェクトを == や != を使用して比較している | Bad practice |
| Eq: 抽象クラスは共変な equals メソッドを宣言している | Bad practice |
| Eq: equals メソッドは互換性のないオペランドをチェックしている | Bad practice |
| Eq: compareTo(...) メソッドを定義して Object.equals() を使用しているクラス | Bad practice |
| Eq: equals メソッドはサブタイプのために失敗する | Bad practice |
| Eq: 共変な equals メソッドの定義 | Bad practice |
| FI: 空のファイナライザは削除するべき | Bad practice |
| FI: ファイナライザの明示的な呼び出し | Bad practice |
| FI: ファイナライザはフィールドを null にする | Bad practice |
| FI: ファイナライザはフィールドを null にするだけ | Bad practice |
| FI: ファイナライザはスーパークラスのファイナライザを呼び出していない | Bad practice |
| FI: ファイナライザはスーパークラスのファイナライザを無効にしている | Bad practice |
| FI: ファイナライザはスーパークラスのファイナライザを呼び出しているだけ | Bad practice |
| FS: 書式文字列は \n よりも %n を使用するべき | Bad practice |
| GC: 検査されない型への総称呼び出し | Bad practice |
| HE: equals メソッドは定義していますが hashCode メソッドは定義していないクラス | Bad practice |
| HE: equals メソッドを定義して Object.hashCode() を使用しているクラス | Bad practice |
| HE: hashCode メソッドを定義していますが equals メソッドは定義していないクラス | Bad practice |
| HE: hashCode メソッドを定義して Object.equals() を使用しているクラス | Bad practice |
| HE: equals メソッドを継承して Object.hashCode() を使用しているクラス | Bad practice |
| IC: スーパークラスは初期化中にサブクラスを使用している | Bad practice |
| IMSE: 疑わしい IllegalMonitorStateException のキャッチ | Bad practice |
| ISC: static メソッドだけを提供するクラスの不必要なインスタンス化 | Bad practice |
| It: Iterator.next() が NoSuchElementException をスローできない | Bad practice |
| J2EE: HttpSession への非直列化可能オブジェクトの格納 | Bad practice |
| JCIP: 不変クラスのフィールドは final にすべき | Bad practice |
| ME: public 列挙型メソッドが無条件にフィールドを設定するPublic enum method unconditionally sets its field | Bad practice |
| ME: 列挙型フィールドは public で可変である | Bad practice |
| NP: 戻り型が Boolean のメソッドが明示的に null を返している | Bad practice |
| NP: null を返すかもしれない clone メソッド | Bad practice |
| NP: equals メソッドは null の引数をチェックしていない | Bad practice |
| NP: null を返すかもしれない toString メソッド | Bad practice |
| Nm: クラス名は大文字から始めるべき | Bad practice |
| Nm: 例外クラスのように命名されているが、クラスは Exception から派生されていない | Bad practice |
| Nm: 紛らわしい名前のメソッド | Bad practice |
| Nm: フィールド名は小文字から始めるべき | Bad practice |
| Nm: Java の後のバージョンのキーワードである識別子を使用している | Bad practice |
| Nm: Java の後のバージョンのキーワードである識別子を使用している | Bad practice |
| Nm: メソッド名は小文字から始めるべきです | Bad practice |
| Nm: クラス名は実装されたインタフェースの単純名を遮るべきではない | Bad practice |
| Nm: クラス名はスーパークラスの単純名を遮るべきではない | Bad practice |
| Nm: 非常に紛らわしい名前のメソッド (多分意図的) | Bad practice |
| Nm: パラメータの間違ったパッケージのためにスーパークラスのメソッドをオーバーライドしていないメソッド | Bad practice |
| ODR: データベースリソースのクローズに失敗するかもしれないメソッド | Bad practice |
| ODR: 例外経路でデータベースリソースのクローズに失敗するかもしれないメソッド | Bad practice |
| OS: ストリームのクローズに失敗するかもしれないメソッド | Bad practice |
| OS: 例外経路でストリームのクローズに失敗するかもしれないメソッド | Bad practice |
| PZ: 繰り返しでエントリオブジェクトを再利用しない | Bad practice |
| RC: 定数への疑わしい参照比較 | Bad practice |
| RC: Boolean 値の疑わしい参照比較 | Bad practice |
| RR: InputStream.read() の戻り値を無視しているメソッド | Bad practice |
| RR: InputStream.skip() の戻り値を無視しているメソッド | Bad practice |
| RV: compareTo()/compare() の結果を無効にする | Bad practice |
| RV: 例外的戻り値を無視しているメソッド | Bad practice |
| SI: スタティックイニシャライザは、すべての static final フィールドが代入される前にインスタンスを作成する | Bad practice |
| SW: Swing メソッドは AWT イベントディスパッチスレッドから呼び出す必要がある | Bad practice |
| Se: 直列化可能クラスの非 transient で非直列化可能なインスタンスフィールド | Bad practice |
| Se: 非直列化可能クラスに直列化可能な内部クラスがある | Bad practice |
| Se: 非直列化可能な値を直列化可能クラスのインスタンスフィールドに格納している | Bad practice |
| Se: Comparator は Serializable を実装していない | Bad practice |
| Se: 直列化可能な内部クラス | Bad practice |
| Se: serialVersionUID が final ではない | Bad practice |
| Se: serialVersionUID が long ではない | Bad practice |
| Se: serialVersionUID が static ではない | Bad practice |
| Se: Serializable なクラスのスーパークラスで、引数なしコンストラクタを定義していない | Bad practice |
| Se: Externalizable なクラスが引数なしコンストラクタを定義していない | Bad practice |
| Se: readResolve メソッドの戻り値の型が Object で宣言されていない | Bad practice |
| Se: 直列化復元によって設定されない transient フィールド | Bad practice |
| SnVI: Serializable なクラスが serialVersionUID を定義していない | Bad practice |
| UI: クラスが拡張されるなら getResource の使い方は安全ではないかもしれない | Bad practice |
| BC: 不可能なキャスト | Correctness |
| BC: 不可能なダウンキャスト | Correctness |
| BC: toArray メソッドの結果の不可能なダウンキャスト | Correctness |
| BC: 常に false を返す instanceof | Correctness |
| BIT: 符号付きバイト値のビット加算 | Correctness |
| BIT: 互換性のないビットマスク | Correctness |
| BIT: ((...) & 0) == 0 なのか確かめている | Correctness |
| BIT: 互換性のないビットマスク | Correctness |
| BIT: 符号付きバイト値のビット論理和 | Correctness |
| BIT: ビット演算の符号をチェックする | Correctness |
| BOA: スーパークラスの Adapter で実装されるメソッドを誤ってオーバーライドしているクラス | Correctness |
| BSHIFT: シフト演算の正しくない構文解析の可能性がある | Correctness |
| BSHIFT: 32ビット int の-31から31の範囲を超えた量によるシフト | Correctness |
| DLS: return 文に無駄なインクリメントがある | Correctness |
| DLS: クラスリテラルの無効な代入 | Correctness |
| DLS: 上書きされたインクリメント | Correctness |
| DMI: 逆にされた引数 | Correctness |
| DMI: 月のための間違った定数値 | Correctness |
| DMI: 正確に表されない double から構築された BigDecimal | Correctness |
| DMI: hasNext メソッドで next メソッドを呼び出している | Correctness |
| DMI: コレクションは自分自身を含めるべきではない | Correctness |
| DMI: D'oh! 無意味なメソッド呼び出し | Correctness |
| DMI: 配列で hashCode メソッドを呼び出している | Correctness |
| DMI: int に対して Double.longBitsToDouble() を呼び出している | Correctness |
| DMI: コレクションへの無意味な呼び出し | Correctness |
| Dm: ランタイムリテンションなしで、アノテーションの存在を調べるためにリフレクションを使用することはできない | Correctness |
| Dm: ScheduledThreadPoolExecutor の最大プールサイズを変えようとする無駄な試み | Correctness |
| Dm: コアプールサイズが0の ScheduledThreadPoolExecutor の作成 | Correctness |
| Dm: EasyMock メソッドへの役に立たない/無意味な呼び出し | Correctness |
| Dm: Math.max と Math.min の間違った組み合わせ | Correctness |
| EC: equals メソッドを使用して配列と非配列を比較している | Correctness |
| EC: 配列の equals メソッド呼び出しは == と等価である | Correctness |
| EC: equals(...) メソッドを使用して互換性のない配列を比較している | Correctness |
| EC: equals(null) の呼び出し | Correctness |
| EC: equals メソッドを呼び出して無関係のクラスとインタフェースを比較している | Correctness |
| EC: equals メソッドを呼び出して異なる型のインタフェースを比較している | Correctness |
| EC: equals メソッドを呼び出して異なる型を比較している | Correctness |
| EC: 参照等価性を使用して異なる型を比較している | Correctness |
| Eq: equals メソッドは常に false を戻す | Correctness |
| Eq: equals メソッドは常に true を返す | Correctness |
| Eq: equals メソッドはクラスオブジェクトではなくクラス名を比較している | Correctness |
| Eq: 列挙型は共変な equals メソッドを定義している | Correctness |
| Eq: equals(Object) メソッドをオーバーライドしていない equals メソッドの定義 | Correctness |
| Eq: Object.equals(Object) をオーバーライドしていない equals メソッドの定義 | Correctness |
| Eq: equals メソッドはスーパークラスの equals メソッドをオーバーライドしているが、対称的ではないかもしれない | Correctness |
| Eq: 共変な equals メソッドを定義して、Object.equals(Object) を継承している | Correctness |
| FE: NaN への等価性のための絶望的なテスト | Correctness |
| FS: 書式指示子へ渡している引数に互換性がない | Correctness |
| FS: 与えられた引数の型は書式指示子に合致しません | Correctness |
| FS: printf スタイルの書式が期待されているところで MessageFormat が与えられている | Correctness |
| FS: 書式文字列で実際に使われるより、多くの引数が渡されている | Correctness |
| FS: 無効な書式文字列 | Correctness |
| FS: 書式文字列は足りない引数を参照している | Correctness |
| FS: 書式文字列ための前の引数がない | Correctness |
| GC: 型パラメータとメソッド引数に関係がない | Correctness |
| HE: ハッシュ化された文脈でハッシュ化できないクラスの使用がシグネチャで宣言されている | Correctness |
| HE: ハッシュデータ構造で hashCode メソッドのないクラスを使用している | Correctness |
| ICAST: int 値を long に変換して絶対時間として使用している | Correctness |
| ICAST: 整数値を double にキャストして Math.ceil() に渡している | Correctness |
| ICAST: 整数値を float にキャストして Math.round() に渡している | Correctness |
| IJU: run メソッドでの JUnit アサーションは JUnit によって通知されない | Correctness |
| IJU: TestCase は suite メソッドの間違った宣言をしている | Correctness |
| IJU: TestCase はテストがない | Correctness |
| IJU: TestCase は super.setup() を呼び出さない setUp メソッドを実装している | Correctness |
| IJU: TestCase は 非 static な suite メソッドを実装している | Correctness |
| IJU: TestCase は super.tearDown() を呼び出さない tearDown メソッドを実装している | Correctness |
| IL: コレクションは自分自身を追加している | Correctness |
| IL: 明らかな無限ループ | Correctness |
| IL: 明らかな無限再帰ループ | Correctness |
| IM: 整数剰余の結果の整数乗算 | Correctness |
| INT: int 値と long 定数との間違った比較 | Correctness |
| INT: 負でない値と負の定数またはゼロとの間違った比較 | Correctness |
| INT: 符号付きバイトの間違った比較 | Correctness |
| IO: オブジェクト出力ストリームへの追加は失敗に終わる | Correctness |
| IP: メソッドで読み取られずに上書きされているパラメータ | Correctness |
| MF: スーパークラスのフィールドを隠すフィールドを定義しているクラス | Correctness |
| MF: フィールドを隠す変数を定義しているメソッド | Correctness |
| NP: null 値を利用している | Correctness |
| NP: null 値を例外経路で利用している | Correctness |
| NP: null の引数をチェックしていないメソッド | Correctness |
| NP: 常に null 値のオブジェクトで close メソッドを呼び出している | Correctness |
| NP: null 値を利用することが保証されている | Correctness |
| NP: null 値を例外経路で利用することが保証されている | Correctness |
| NP: 非 null フィールドは初期化されていない | Correctness |
| NP: メソッド呼び出しは非 null パラメータに対して null を渡している | Correctness |
| NP: null を返すかもしれないメソッドが @Nonnull 宣言されている | Correctness |
| NP: null とわかっている値をその型のインスタンスなのか確かめている | Correctness |
| NP: null 値を利用している可能性がある | Correctness |
| NP: null 値を例外経路で利用している可能性がある | Correctness |
| NP: メソッド呼び出しは非 null パラメータに対して null を渡している | Correctness |
| NP: メソッド呼び出しは非 null パラメータに対して null を渡している | Correctness |
| NP: 非 null パラメータに null を渡している非仮想メソッドの呼び出し | Correctness |
| NP: Optional の戻り型を持つメソッドが明示的に null を返す | Correctness |
| NP: @Nonnull でアノテートされたフィールドに null を格納している | Correctness |
| NP: 書き込まれていないフィールドの読み出し | Correctness |
| Nm: クラスは equal(Object) を定義しています。equals(Object) にすべきですか? | Correctness |
| Nm: クラスは hashcode() を定義しています。hashCode() にすべきですか? | Correctness |
| Nm: クラスは tostring() を定義しています。toString() にすべきですか? | Correctness |
| Nm: 明らかなメソッドとコンストラクタの混乱 | Correctness |
| Nm: 非常に紛らわしい名前のメソッド | Correctness |
| Nm: パラメータの間違ったパッケージのためにスーパークラスのメソッドをオーバーライドしていないメソッド | Correctness |
| QBA: 論理式で boolean リテラル値を代入しているメソッド | Correctness |
| RANGE: 配列インデックスは範囲外 | Correctness |
| RANGE: 配列の長さは範囲外 | Correctness |
| RANGE: 配列オフセットは範囲外 | Correctness |
| RANGE: 文字列インデックスは範囲外 | Correctness |
| RC: 疑わしい参照比較 | Correctness |
| RCN: 既に利用していた値の null チェック | Correctness |
| RE: 正規表現のための無効な構文 | Correctness |
| RE: 正規表現のために使われている File.separator | Correctness |
| RE: 正規表現のために使われている "." または "|" | Correctness |
| RV: 0から1の乱数値は整数値0に丸められる | Correctness |
| RV: 符号付き32ビットハッシュコードの絶対値を計算する間違った試み | Correctness |
| RV: 符号付き整数の乱数の絶対値を計算する間違った試み | Correctness |
| RV: compareTo によって返された特定の値のコードチェック | Correctness |
| RV: 作成した例外をスローするのではなく捨てている | Correctness |
| RV: 戻り値を無視しているメソッド | Correctness |
| RpC: 条件テストの繰り返し | Correctness |
| SA: フィールドの自己代入 | Correctness |
| SA: フィールドとそれ自身との自己比較 | Correctness |
| SA: フィールドの無意味な自己演算 (たとえば、 x & x) | Correctness |
| SA: フィールドへの代入ではなくローカル変数への自己代入 | Correctness |
| SA: ローカル変数とそれ自身との自己比較 | Correctness |
| SA: 変数の無意味な自己演算 (たとえば、x & x) | Correctness |
| SF: switch 文のフォールスルーのために格納が無効になっている | Correctness |
| SF: スローする switch 文のフォールスルーのために格納が無効になっている | Correctness |
| SIC: 非 static 内部クラスとスレッドローカルのデッドロック | Correctness |
| SIO: instanceof 演算子を使用した不必要な型チェック | Correctness |
| SQL: インデックスが0で PreparedStatement にアクセスしようとしているメソッド | Correctness |
| SQL: インデックスが0で ResultSet にアクセスしようとしているメソッド | Correctness |
| STI: interrupted メソッドを呼び出すために不要な currentThread メソッドを呼び出している | Correctness |
| STI: スレッドインスタンスで static Thread.interrupted() を呼び出している | Correctness |
| Se: 直列化機構のために private にしなければならないメソッド | Correctness |
| Se: readResolve メソッドが static メソッドとして宣言されている | Correctness |
| TQ: 型修飾子でアノテーションされた値がその修飾子を付けてはならない値を必要とする場所で使われている | Correctness |
| TQ: 互換性のない型修飾子による比較値 | Correctness |
| TQ: 型修飾子を付けていないかもしれない値がその型修飾子を必要とする方法で常に使われている | Correctness |
| TQ: 型修飾子を付けているかもしれない値がその型修飾子を禁止する方法で常に使われている | Correctness |
| TQ: 型修飾子でアノテートされていない値がその修飾子が付けられた値を必要とする場所で使われている | Correctness |
| TQ: 型修飾子がない値が修飾子を必要とする場所で使われている | Correctness |
| UMAC: 呼び出し不可能なメソッドが無名クラスで定義されている | Correctness |
| UR: コンストラクタで初期化されていないフィールドを読み出している | Correctness |
| UR: スーパークラスのコンストラクタから呼び出されるメソッドで初期化されていないフィールドを読み出している | Correctness |
| USELESS_STRING: 名前のない配列で toString メソッドを呼び出している | Correctness |
| USELESS_STRING: 配列で toString メソッドを呼び出している | Correctness |
| USELESS_STRING: 書式文字列を使用して役に立たない方法で配列をフォーマットしている | Correctness |
| UwF: null に設定されるだけのフィールド | Correctness |
| UwF: 書き込まれていないフィールド | Correctness |
| VA: 可変長引数を期待しているメソッドにプリミティブ型の配列を渡している | Correctness |
| LG: ロガーの変更は OpenJDK の弱参照が原因で潜在的に失われる | Experimental |
| OBL: ストリームやリソースのクリーンアップに失敗するかもしれないメソッド | Experimental |
| OBL: チェック例外でストリームやリソースのクリーンアップに失敗するかもしれないメソッド | Experimental |
| Dm: 呼び出したメソッドの Locale パラメータの使用を検討する | Internationalization |
| Dm: デフォルトエンコーディングへの依存 | Internationalization |
| DP: doPrivileged ブロック内で作成されるべきクラスローダ | Malicious code vulnerability |
| DP: doPrivileged ブロック内で呼び出すべきメソッド | Malicious code vulnerability |
| EI: 可変オブジェクトへの参照を返すことによって内部表現を暴露するかもしれないメソッド | Malicious code vulnerability |
| EI2: 可変オブジェクトへの参照を取り込むことによって内部表現を暴露するかもしれないメソッド | Malicious code vulnerability |
| FI: ファイナライザは public ではなく protected にすべき | Malicious code vulnerability |
| MS: static フィールドに可変オブジェクトを格納することによって、内部の静的状態を暴露するかもしれないメソッド | Malicious code vulnerability |
| MS: final でないフィールドは悪意のあるコードから保護できない | Malicious code vulnerability |
| MS: 配列を返すことによって内部表現を暴露するかもしれない public static メソッド | Malicious code vulnerability |
| MS: final かつパッケージプロテクテッドにすべきフィールド | Malicious code vulnerability |
| MS: 可変配列のフィールド | Malicious code vulnerability |
| MS: 可変コレクションのフィールド | Malicious code vulnerability |
| MS: パッケージプロテクテッドにすべき可変コレクションのフィールド | Malicious code vulnerability |
| MS: 可変 Hashtable のフィールド | Malicious code vulnerability |
| MS: インタフェースから移動してパッケージプロテクテッドにすべきフィールド | Malicious code vulnerability |
| MS: パッケージプロテクテッドにすべきフィールド | Malicious code vulnerability |
| MS: final にすべきフィールド | Malicious code vulnerability |
| MS: final でないフィールドはリファクタリングするべき | Malicious code vulnerability |
| AT: 並行抽象の呼び出しシーケンスはアトミックではないかもしれない | Multithreaded correctness |
| DC: フィールドのダブルチェックの可能性 | Multithreaded correctness |
| DC: 部分的に初期化されたオブジェクトを暴露する可能性がある | Multithreaded correctness |
| DL: Boolean の同期化 | Multithreaded correctness |
| DL: デッドロックの原因になる可能性があるボクシングされたプリミティブ型の同期化 | Multithreaded correctness |
| DL: 正準化した文字列の同期化 | Multithreaded correctness |
| DL: ボクシングされたプリミティブ値の同期化 | Multithreaded correctness |
| Dm: Condition で wait メソッドを呼び出している | Multithreaded correctness |
| Dm: デフォルトの空の run メソッドを使用して作成されたスレッド | Multithreaded correctness |
| ESync: 空の synchronized ブロック | Multithreaded correctness |
| IS: 一貫性のない同期化 | Multithreaded correctness |
| IS: 並行アクセスに対してガードされていないフィールド | Multithreaded correctness |
| JLM: Lock で同期化している | Multithreaded correctness |
| JLM: java.util.concurrent のインスタンスで同期化している | Multithreaded correctness |
| JLM: util.concurrent 抽象でモニタスタイルの wait メソッドを使用している | Multithreaded correctness |
| LI: static フィールドの間違った遅延初期化 | Multithreaded correctness |
| LI: 更新される static フィールドの間違った遅延初期化 | Multithreaded correctness |
| ML: フィールドを同期化でガードしようとする無駄な試み | Multithreaded correctness |
| ML: 更新されるフィールドで同期化しているメソッド | Multithreaded correctness |
| MSF: 可変サーブレットフィールド | Multithreaded correctness |
| MWN: 不整合な notify メソッド | Multithreaded correctness |
| MWN: 不整合な wait メソッド | Multithreaded correctness |
| NN: 裸の notify メソッド | Multithreaded correctness |
| NP: 同じフィールドでの同期化と null チェック | Multithreaded correctness |
| No: notifyAll メソッドではなく notify メソッドを使用している | Multithreaded correctness |
| RS: readObject メソッドを同期化しているクラス | Multithreaded correctness |
| RV: putIfAbsent の戻り値は無視されて putIfAbsent に渡した値は再利用された | Multithreaded correctness |
| Ru: スレッドで run メソッドを呼び出している | Multithreaded correctness |
| SC: Thread.start() を呼び出しているコンストラクタ | Multithreaded correctness |
| SP: スピンロックをしているメソッド | Multithreaded correctness |
| STCAL: static Calendar の呼び出し | Multithreaded correctness |
| STCAL: static DateFormat の呼び出し | Multithreaded correctness |
| STCAL: static Calendar フィールド | Multithreaded correctness |
| STCAL: static DateFormat | Multithreaded correctness |
| SWL: ロックを保持して Thread.sleep() を呼び出しているメソッド | Multithreaded correctness |
| TLW: 2つ以上のロックを保持して wait メソッドを呼び出している | Multithreaded correctness |
| UG: 同期化していない get メソッド、同期化している set メソッド | Multithreaded correctness |
| UL: すべての経路でロックが解除されないメソッド | Multithreaded correctness |
| UL: すべての例外経路でロックが解除されないメソッド | Multithreaded correctness |
| UW: wait メソッドの無条件呼び出し | Multithreaded correctness |
| VO: volatile フィールドへのインクリメントはアトミックではない | Multithreaded correctness |
| VO: 配列への volatile 参照は、配列要素を volatile として扱わない | Multithreaded correctness |
| WL: クラスリテラルではなく getClass で同期化している | Multithreaded correctness |
| WS: writeObject メソッドは同期化しているがその他のメソッドは同期化していないクラス | Multithreaded correctness |
| Wa: Condition.await() がループの中にない | Multithreaded correctness |
| Wa: wait メソッドがループの中にない | Multithreaded correctness |
| Bx: プリミティブ値がボクシングされて、すぐにアンボクシングされる | Performance |
| Bx: プリミティブ値がプリミティブ型の型変換をするためにボクシングされて、アンボクシングされる | Performance |
| Bx: プリミティブ値が3項演算子のためにアンボクシングされて、型変換される | Performance |
| Bx: ボクシングされた値がアンボクシングされて、すぐに再ボクシングされる | Performance |
| Bx: プリミティブが比較でボクシングされている | Performance |
| Bx: ボクシング/アンボクシングはプリミティブを解析する | Performance |
| Bx: toString メソッドを呼び出すためにプリミティブ型のラッパクラスのインスタンスを作成している | Performance |
| Bx: 効率が悪い浮動小数点 Number コンストラクタを呼び出しているメソッド | Performance |
| Bx: 効率が悪い Number コンストラクタを呼び出しているメソッド | Performance |
| Dm: URL の equals メソッドと hashCode メソッドはブロックする | Performance |
| Dm: URL の Map や Set はひどい性能になる | Performance |
| Dm: 効率が悪い Boolean コンストラクタを呼び出しているメソッド | Performance |
| Dm: 明示的なガベージコレクション | Performance |
| Dm: クラスオブジェクトを得るためだけにインスタンスを作成しているメソッド | Performance |
| Dm: 整数の乱数を生成するためには nextDouble メソッド ではなく nextInt メソッドを使用する | Performance |
| Dm: 効率が悪い new String(String) コンストラクタを呼び出しているメソッド | Performance |
| Dm: String の toString メソッドを呼び出しているメソッド | Performance |
| Dm: 効率が悪い new String() コンストラクタを呼び出しているメソッド | Performance |
| HSC: 複数のクラスファイルにわたって複製されている巨大な文字列定数 | Performance |
| SBSC: ループの中で + を使用して文字列を連結しているメソッド | Performance |
| SIC: static 内部クラスにすべき | Performance |
| SIC: 名前付き static 内部クラスにリファクタリングできるかもしれない | Performance |
| SIC: static 内部クラスにリファクタリングできるかもしれない | Performance |
| SS: 読み出されないフィールド | Performance |
| UM: 定数値で Math クラスの static メソッドを呼び出しているメソッド | Performance |
| UPM: private メソッドは決して呼び出されない | Performance |
| UrF: 読み出されないフィールド | Performance |
| UuF: 未使用のフィールド | Performance |
| WMI: entrySet イテレータではなく効率が悪い keySet イテレータを使用している | Performance |
| Dm: ハードコードされた定数データベースパスワード | Security |
| Dm: 空のデータベースパスワード | Security |
| HRS: 信頼できない入力から形成された HTTP cookie | Security |
| HRS: HTTP レスポンススプリッティング脆弱性 | Security |
| PT: サーブレットの絶対パストラバーサル | Security |
| PT: サーブレットの相対パストラバーサル | Security |
| SQL: SQL の Statement の execute または addBatch メソッドに定数でない文字列を渡している | Security |
| SQL: PreparedStatement が定数でない文字列から生成されている | Security |
| XSS: 反射型クロスサイトスクリプティング脆弱性がある JSP | Security |
| XSS: 反射型クロスサイトスクリプティング脆弱性がエラーページにあるサーブレット | Security |
| XSS: 反射型クロスサイトスクリプティング脆弱性があるサーブレット | Security |
| BC: 抽象コレクションへの疑わしいキャスト | Dodgy code |
| BC: 具象コレクションへの疑わしいキャスト | Dodgy code |
| BC: 未チェック/未確認のキャスト | Dodgy code |
| BC: メソッドからの戻り値の未チェック/未確認のキャスト | Dodgy code |
| BC: 常に true を返す instanceof | Dodgy code |
| BSHIFT: 符号なし右シフトを short/byte にキャストしている | Dodgy code |
| CI: final なクラスが protected フィールドを宣言している | Dodgy code |
| DB: 2つの分岐のために同じコードを使用しているメソッド | Dodgy code |
| DB: switch 文の2つの case のために同じコードを使用しているメソッド | Dodgy code |
| DLS: ローカル変数への無効な代入 | Dodgy code |
| DLS: return 文に役に立たない代入がある | Dodgy code |
| DLS: ローカル変数への無効な null 代入 | Dodgy code |
| DLS: フィールドを遮るローカル変数への無効な代入 | Dodgy code |
| DMI: ハードコードされた絶対パス名への参照がある | Dodgy code |
| DMI: ObjectOutput に書き込まれる非直列化可能オブジェクト | Dodgy code |
| DMI: substring(0) の呼び出しは元の値を返す | Dodgy code |
| Dm: Thread オブジェクトが Runnable が期待されているところに渡されている | Dodgy code |
| Eq: スーパークラスの equals メソッドをオーバーライドしていないクラス | Dodgy code |
| Eq: 異常な equals メソッド | Dodgy code |
| FE: 浮動小数点の等価性のためのテスト | Dodgy code |
| FS: Boolean 型でない引数を ％b 書式指示子を使用してフォーマットしている | Dodgy code |
| IA: 潜在的な継承されたメソッドなのか外部のメソッドなのかあいまいなメソッドの呼び出し | Dodgy code |
| IC: 初期化が循環している | Dodgy code |
| ICAST: 整数の除算の結果を double または float にキャストしている | Dodgy code |
| ICAST: 整数乗算の結果を long にキャストしている | Dodgy code |
| IM: 平均の計算はオーバーフローする可能性がある | Dodgy code |
| IM: 負数で機能しない奇数チェック | Dodgy code |
| INT: 1を法とする整数の剰余 | Dodgy code |
| INT: 整数値の無意味なビットマスク演算 | Dodgy code |
| INT: 整数値の無意味な比較 | Dodgy code |
| MTIA: Servlet クラスを拡張したクラスでのインスタンス変数の使用 | Dodgy code |
| MTIA: Struts Action を拡張したクラスでのインスタンス変数の使用 | Dodgy code |
| NP: readLine メソッドの結果が null なのか確かめないで値を利用している | Dodgy code |
| NP: readLine メソッドの結果をすぐに利用している | Dodgy code |
| NP: null とわかっている値のロード | Dodgy code |
| NP: メソッドはパラメータに nullness アノテーションを強化している | Dodgy code |
| NP: メソッドは戻り値の nullness アノテーションを緩和している | Dodgy code |
| NP: null になっている可能性があるメソッドの戻り値を利用している | Dodgy code |
| NP: null 値を実行不可能かもしれない分岐で利用している可能性がある | Dodgy code |
| NP: パラメータは 非 null でなければならないが null 可能としてアノテートされている | Dodgy code |
| NP: 書き込まれていない public または protected フィールドの読み出し | Dodgy code |
| NS: 潜在的な非短絡論理の危険な使用 | Dodgy code |
| NS: 非短絡論理の疑わしい使用 | Dodgy code |
| PZLA: null ではなく長さが0の配列を返すことを検討する | Dodgy code |
| QF: 複雑か巧妙か間違ったインクリメントの for ループ | Dodgy code |
| RCN: 非 null 値と null 値との冗長な比較 | Dodgy code |
| RCN: 2つの null 値の冗長な比較 | Dodgy code |
| RCN: null でないことがわかっている値の冗長な null チェック | Dodgy code |
| RCN: null とわかっている値の冗長な null チェック | Dodgy code |
| REC: 例外がスローされないのに例外をキャッチしている | Dodgy code |
| RI: スーパークラスと同じインタフェースを実装しているクラス | Dodgy code |
| RV: String.indexOf の結果が正かどうか確かめている | Dodgy code |
| RV: readLine メソッドの結果を null でないのか確かめた後で捨てている | Dodgy code |
| RV: ハッシュコードの剰余は負かもしれない | Dodgy code |
| RV: 符号付き32ビット整数の乱数の剰余 | Dodgy code |
| RV: メソッドは戻り値を無視しています、これは間違いではないですか? | Dodgy code |
| RV: 副作用がないメソッドの戻り値は無視される | Dodgy code |
| SA: フィールドの二重代入 | Dodgy code |
| SA: ローカル変数の二重代入 | Dodgy code |
| SA: ローカル変数の自己代入 | Dodgy code |
| SF: 1つの case が次の case へと通り抜ける switch 文を発見した | Dodgy code |
| SF: default がない switch 文を発見した | Dodgy code |
| ST: インスタンスメソッドから static フィールドへの書き込み | Dodgy code |
| Se: サブクラスで継承できない private な readResolve メソッド | Dodgy code |
| Se: Serializable でないクラスの transient フィールド | Dodgy code |
| TQ: 値は型修飾子を必要としているが、不明としてマークされている | Dodgy code |
| TQ: 値は型修飾子を必要としないが、不明としてマークされている | Dodgy code |
| UC: 条件は効果がない | Dodgy code |
| UC: 条件は変数型のために効果がない | Dodgy code |
| UC: 役に立たないオブジェクトを作成した | Dodgy code |
| UC: 役に立たないオブジェクトをスタックで作成した | Dodgy code |
| UC: 役に立たない空ではない void メソッド | Dodgy code |
| UCF: 役に立たない制御フロー | Dodgy code |
| UCF: 次の行へ続くだけの役に立たない制御フロー | Dodgy code |
| UrF: 読み出されない public または protected フィールド | Dodgy code |
| UuF: 未使用の public または protected フィールド | Dodgy code |
| UwF: コンストラクタで初期化されていないフィールドを null チェックなしで null 値を利用している | Dodgy code |
| UwF: 書き込まてれいない public または protected フィールド | Dodgy code |
| XFB: XMLインタフェースの特定の実装のインスタンスを作成しているメソッド | Dodgy code |