Java チェッカー リファレンス
Java チェッカー リファレンス
チェッカー コード | 説明 | デフォルトの重要度 | デフォルトで有効にしますか? | チューニング可能ですか? |
---|---|---|---|---|
ANDROID.LIFECYCLE.SV.FRAGMENTINJ | 未検証のフラグメント クラス名 | 1 | true | No |
ANDROID.LIFECYCLE.SV.GETEXTRA | 未検証の外部データ | 3 | true | No |
ANDROID.NPE | Android アプリケーションの null 値を参照しています | 4 | true | Yes |
ANDROID.RLK.MEDIAPLAYER | メディア プレイヤーが終了時に解放されていません | 1 | true | Yes |
ANDROID.RLK.MEDIARECORDER | メディア レコーダーが終了時に解放されていません | 1 | true | Yes |
ANDROID.RLK.SQLCON | Sql コネクションが終了時に閉じられていません | 1 | true | Yes |
ANDROID.RLK.SQLOBJ | Sql オブジェクトが終了時に閉じられていません | 1 | true | Yes |
ANDROID.UF.BITMAP | recycle後のビットマップの使用 | 2 | true | Yes |
ANDROID.UF.CAMERA | 解放後のカメラの使用 | 2 | true | Yes |
ANDROID.UF.MEDIAPLAYER | 解放後のメディア プレイヤーの使用 | 2 | true | Yes |
ANDROID.UF.MEDIARECORDER | 解放後のメディア レコーダーの使用 | 2 | true | Yes |
CMP.CLASS | クラス名による比較が行われています | 4 | false | No |
CMPF.FLOAT | 浮動小数点型に対する等価チェックは避ける必要があります | 4 | true | No |
CMP.OBJ | == によるオブジェクトの比較 | 4 | true | No |
CMP.STR | == による文字列の比較 | 4 | true | No |
COV.CMP | compareTo() メソッドは、シグネチャ 'public int compareTo(Object)' を持つ必要があります | 4 | true | No |
ECC.EMPTY | Catch 節が空です | 4 | true | No |
EHC.EQ | クラスが hashCode() を定義していますが、equals() は定義していません | 4 | true | No |
EHC.HASH | クラスが equals() を定義していますが、hashCode() は定義していません | 4 | true | No |
ESCMP.EMPTYSTR | 非効率な空文字列比較 | 4 | true | No |
EXC.BROADTHROWS | 過度に広範な範囲に対応するメソッドが宣言をスローしています | 4 | true | No |
FIN.EMPTY | 空の finalize() メソッドは削除する必要があります | 3 | true | No |
FIN.NOSUPER | finalize() メソッドの実装は super.finalize() を呼び出す必要があります | 3 | true | No |
FSC.PRT | クラスとそのスーパークラスが同じ名前の protected フィールドを持ちます | 4 | false | No |
FSC.PRV | クラスとそのスーパークラスが同じ名前の private フィールドを持ちます | 4 | false | No |
FSC.PUB | クラスとそのスーパークラスが同じ名前の public フィールドを持ちます | 4 | false | No |
JD.BITCMP | 式で非短絡ロジックが使用されています。 | 3 | true | No |
JD.BITMASK | ビット演算でエラーの可能性があります | 3 | true | No |
JD.BITR | 冗長な式 | 3 | true | No |
JD.CALL.WRONGSTATIC | static メソッドがインスタンス参照から呼び出されています | 4 | true | No |
JD.CAST.COL | コレクションに対する ClassCastException の可能性があります | 4 | true | No |
JD.CAST.KEY | コレクション要素の取得に使用されるキーの型が正しくない可能性があります | 4 | true | No |
JD.CAST.SUSP | 異なる型に対する ClassCastException の可能性があります | 4 | true | No |
JD.CAST.UPCAST | 派生型に対する ClassCastException の可能性があります | 4 | true | No |
JD.CATCH | ランタイム例外のキャッチ | 4 | true | No |
JD.CONCUR | ConcurrentModificationException の可能性があります | 3 | true | No |
JD.EQ.ARR | 配列に対する 'equals' の呼び出し | 4 | true | No |
JD.EQ.UTA | 整合しない型 (配列と非配列) に対して 'equals' が呼び出されています | 4 | true | No |
JD.EQ.UTC | 整合しない型に対して equals が呼び出されています | 4 | true | No |
JD.FINRET | finally 内の return | 4 | true | No |
JD.IFBAD | 'if' 文が冗長です | 3 | true | No |
JD.IFEMPTY | 'if' 文が冗長です。未完成のコード | 3 | true | No |
JD.INF.AREC | 見かけ上の無限再帰 | 4 | true | No |
JD.INST.TRUE | 冗長な 'instanceof' 条件 | 4 | true | No |
JD.LIST.ADD | 自分自身に追加されたコンテナ | 4 | true | No |
JD.LOCK | 取得したロックを解放していません | 2 | true | Yes |
JD.LOCK.NOTIFY | ロックが保持された状態で 'notify' メソッドが呼び出されています | 4 | true | No |
JD.LOCK.SLEEP | ロックが保持された状態で 'sleep' メソッドが呼び出されています | 4 | true | No |
JD.LOCK.WAIT | ロックが保持された状態で 'wait' メソッドが呼び出されています | 4 | true | No |
JD.METHOD.CBS | メソッドは静的です | 4 | false | No |
JD.NEXT | 'NoSuchElementException' の可能性があります | 4 | true | Yes |
JD.OVER | オーバーライドの不一致 | 4 | true | No |
JD.RC.EXPR.CHECK | テスト式は常に true となります | 4 | true | No |
JD.RC.EXPR.DEAD | 冗長なチェックはデッド コードの原因となります | 4 | false | No |
JD.ST.POS | 'indexOf' メソッドのチェックが不適切です | 4 | true | No |
JD.SYNC.DCL | ダブルチェック ロッキング | 4 | true | No |
JD.SYNC.IN | 一貫性のない同期化 | 4 | true | No |
JD.THREAD.RUN | 'Thread.run' メソッドが明示的に呼び出されています | 4 | true | No |
JD.UMC.FINALIZE | 'Object.finalize' メソッドが明示的に呼び出されています | 3 | true | No |
JD.UMC.RUNFIN | runFinalizersOnExit() が呼び出されています | 3 | true | No |
JD.UMC.WAIT | 間違ったオブジェクトに対して wait が呼び出されています | 4 | true | No |
JD.UNCAUGHT | 例外がキャッチされていません | 4 | true | No |
JD.UN.MET | 未使用の non-private メソッド | 4 | false | No |
JD.UNMOD | 変更できないコレクションの変更 | 2 | true | Yes |
JD.UN.PMET | 未使用の private メソッド | 3 | true | No |
JD.VNU | 変数はいずれかのパスで代入された後に一度も読み取られていません | 4 | true | No |
JD.VNU.NULL | 変数はいずれかのパスで null が代入された後に一度も読み取られていません | 4 | true | No |
MNA.CAP | メソッド名は大文字以外で始まる必要があります | 4 | true | No |
MNA.CNS | メソッド名がコンストラクタ名と同じですが、コンストラクタではありません | 4 | true | No |
MNA.SUS | 疑わしいメソッド名 | 4 | true | No |
NPE.COND | null チェック後の null ポインタを参照しています | 1 | true | Yes |
NPE.CONST | null 定数が代入されたオブジェクトを参照しています | 1 | true | Yes |
NPE.RET | メソッドから返された null ポインタを参照しています | 1 | true | Yes |
NPE.RET.UTIL | マップまたはコレクションから返されたnull 値を参照しています | 1 | true | Yes |
NPE.STAT | 戻り値の null ポインタ 参照 (統計情報) | 4 | false | Yes |
REDUN.DEF | 式を自分自身に代入しています。 | 4 | true | No |
REDUN.EQ | equals() の両側に同じ式が指定された疑わしい呼び出しです | 4 | true | No |
REDUN.EQNULL | equals() に式と null が指定された疑わしい呼び出しです(決して true にはなりません) | 4 | true | No |
REDUN.FINAL | 'final' 修飾子が冗長です | 4 | true | No |
REDUN.NULL | null 定数の代わりに変数が使用されています | 4 | true | No |
REDUN.OP | 両側に同じ式が指定された疑わしい演算です | 4 | true | No |
RI.IGNOREDCALL | immutable オブジェクトに対して呼び出されたメソッドから返された値が無視されています | 4 | true | No |
RI.IGNOREDNEW | 新規に作成されたオブジェクトが無視されています | 4 | true | No |
RLK.AWT | AWT オブジェクトが終了時に破棄されていません | 1 | true | Yes |
RLK.FIELD | フィールドに保存されたシステム リソースがリークする可能性があります | 4 | true | No |
RLK.HIBERNATE | Hibernate オブジェクトが終了時に閉じられていません | 1 | true | Yes |
RLK.IMAGEIO | ImageIO ストリームが終了時に閉じられていません | 1 | true | Yes |
RLK.IN | 入力ストリームが終了時に閉じられていません | 1 | true | Yes |
RLK.JNDI | JNDI コンテキストが終了時に閉じられていません | 1 | true | Yes |
RLK.MAIL | JavaMail オブジェクトが終了時に閉じられていません | 1 | true | Yes |
RLK.MICRO | Java Microedition 接続が終了時に閉じられていません | 1 | true | Yes |
RLK.NIO | NIO オブジェクトが終了時に閉じられていません | 1 | true | Yes |
RLK.OUT | 出力ストリームが終了時に閉じられていません | 1 | true | Yes |
RLK.SOCK | ソケットが終了時に閉じられていません | 1 | true | Yes |
RLK.SQLCON | Sql 接続が終了時に閉じられていません | 1 | true | Yes |
RLK.SQLOBJ | Sql オブジェクトが終了時に閉じられていません | 1 | true | Yes |
RLK.SWT | SWT オブジェクトが終了時に破棄されていません | 1 | true | Yes |
RLK.ZIP | Zip ファイルが終了時に閉じられていません | 1 | true | Yes |
RNU.THIS | this と null が比較されていますが、this は null になり得ません | 4 | true | No |
RR.IGNORED | 戻り値が無視されています | 4 | true | No |
RTC.CALL | 型変換は冗長です | 4 | true | No |
STRCON.LOOP | ループ内でStringオブジェクトに対して append が使用されています | 4 | true | No |
SV.CLASSDEF.INJ | ランタイムクラス定義インジェクション | 2 | true | No |
SV.CLASSLOADER.INJ | クラスローダー URL インジェクション | 2 | true | No |
SV.CLEXT.CLLOADER | クラスが 'java.lang.ClassLoader' を拡張しています | 4 | false | No |
SV.CLEXT.POLICY | クラスが 'java.security.Policy' を拡張しています | 4 | false | No |
SV.CLLOADER | クラスローダが直接使用されています | 4 | false | No |
SV.CLONE.SUP | クラスは 'clone' メソッドを実装していますが、Cloneable を実装していません | 4 | false | No |
SV.CSRF.GET | GET リクエスト中の CSRF トークン | 4 | false | Yes |
SV.CSRF.ORIGIN | オリジンチェックなしの要求ハンドラ | 4 | false | Yes |
SV.CSRF.TOKEN | CSRF チェックなしの状態変更要求ハンドラ | 4 | false | Yes |
SV.DATA.BOUND | 信頼できないデータが信頼できるストレージにリークしています | 3 | true | Yes |
SV.DATA.DB | データ インジェクション | 2 | true | Yes |
SV.DOS.ARRINDEX | 不正なインデックスが配列アクセスに使用されています | 3 | true | Yes |
SV.DOS.ARRSIZE | 不正なサイズが配列割り当てに使用されています | 3 | true | Yes |
SV.DOS.TMPFILEDEL | JVM のライフタイムの間一時ファイルが存続します | 3 | true | Yes |
SV.DOS.TMPFILEEXIT | 一時ファイルが存続します | 3 | true | Yes |
SV.ECV | クラスローダが直接使用されています | 4 | false | No |
SV.EMAIL | 未チェックの電子メール | 2 | true | Yes |
SV.EXEC | プロセス インジェクション | 2 | true | Yes |
SV.EXEC.DIR | プロセス インジェクション。作業ディレクトリ | 2 | true | Yes |
SV.EXEC.ENV | プロセス インジェクション。環境変数 | 2 | true | Yes |
SV.EXEC.LOCAL | プロセス インジェクション。ローカル引数 | 3 | true | No |
SV.EXPOSE.FIELD | static フィールドは悪意のあるコードによって変更される可能性があります | 4 | false | No |
SV.EXPOSE.FIN | finalize() メソッドは、public ではなく protected アクセス修飾子を使用する必要があります | 4 | false | No |
SV.EXPOSE.IFIELD | インスタンス フィールドは final にする必要があります | 4 | false | No |
SV.EXPOSE.MUTABLEFIELD | static mutable フィールドは悪意のあるコードによってアクセスされる可能性があります | 4 | false | No |
SV.EXPOSE.RET | 内部表現が露出される可能性があります | 4 | false | No |
SV.EXPOSE.STORE | メソッドが mutable オブジェクトへの参照を保存しています | 4 | false | No |
SV.HASH.NO_SALT | ソルトなしの一方向性暗号化ハッシュの使用 | 3 | true | No |
SV.HTTP_SPLIT | HTTP 応答分割 | 2 | true | Yes |
SV.IL.DEV | 設計情報の漏洩 | 3 | true | Yes |
SV.IL.FILE | ファイル名のリーク | 3 | true | Yes |
SV.INT_OVF | 不正データが整数オーバーフローを引き起こす可能性があります | 2 | true | Yes |
SV.LDAP | 未検証のユーザ入力が LDAP フィルタとして使用されています | 2 | true | Yes |
SV.LOG_FORGING | ログの偽造 | 3 | true | Yes |
SV.PASSWD.HC | ハードコードされたパスワード | 2 | true | Yes |
SV.PASSWD.HC.EMPTY | 空のパスワード | 2 | true | Yes |
SV.PASSWD.PLAIN | プレーンテキストのパスワード | 2 | true | Yes |
SV.PATH | パスまたはファイル名のインジェクション | 3 | true | Yes |
SV.PATH.INJ | ファイル インジェクション | 3 | true | Yes |
SV.RANDOM | 安全ではない乱数ジェネレータの使用 | 4 | true | No |
SV.SCRIPT | スクリプトの実行 | 2 | true | Yes |
SV.SENSITIVE.DATA | 暗号化されていない機密データが書き込まれます | 2 | true | Yes |
SV.SENSITIVE.OBJ | 暗号化されていない機密データを持つオブジェクトが保存されます | 2 | true | Yes |
SV.SERIAL.INON | インタフェースが 'Serializable' を拡張しています | 4 | false | No |
SV.SERIAL.NON | クラスが 'Serializable' を実装しています | 4 | false | No |
SV.SERIAL.NOREAD | メソッド readObject() を Serializable クラスに対して定義する必要があります | 4 | false | No |
SV.SERIAL.NOWRITE | メソッド writeObject() を Serializable クラスに対して定義する必要があります | 4 | false | No |
SV.SERIAL.SIG | Serializable クラスのメソッド readObject() および writeObject() が正しいシグネチャを持つ必要があります | 4 | false | No |
SV.SHARED.VAR | サーブレットから static 変数への非同期アクセス | 4 | true | No |
SV.SOCKETS | 好ましくない手法:ソケットの使用 | 4 | false | No |
SV.SQL | SQL インジェクション | 2 | true | Yes |
SV.SQL.DBSOURCE | 未検証のデータベースからの情報がSQL文に使用されています | 3 | true | Yes |
SV.STRBUF.CLEAN | 文字列バッファが削除されていません | 3 | false | Yes |
SV.STRUTS.NOTRESET | ステータス フォーム:リセットが整合していません | 4 | false | No |
SV.STRUTS.NOTVALID | ステータス フォーム:検証が整合していません | 4 | false | No |
SV.STRUTS.PRIVATE | ステータス フォーム: non-private フィールド | 4 | false | No |
SV.STRUTS.RESETMET | ステータス フォーム: reset メソッド | 4 | false | No |
SV.STRUTS.STATIC | ステータス フォーム: static フィールド | 4 | false | No |
SV.STRUTS.VALIDMET | ステータス フォーム: validate メソッド | 4 | false | No |
SV.TAINT | 不正データ | 3 | false | Yes |
SV.TAINT_NATIVE | 不正データがネイティブ コードに渡されています | 3 | true | Yes |
SV.TMPFILE | 一時ファイルのパス改ざん | 3 | true | Yes |
SV.UMC.EXIT | System.exit() および Runtime.exit() メソッドの呼び出しをサーブレット コードで使用すべきではありません | 4 | false | No |
SV.UMC.JDBC | アプリケーションが DriverManager.getConnection() を直接呼び出すことは避けるべきです | 4 | false | No |
SV.UMC.THREADS | 好ましくない手法:スレッド管理の使用 | 4 | false | No |
SV.UMD.MAIN | デバッグ コードの削除忘れ - main メソッド | 4 | false | No |
SV.USE.POLICY | Policy のメソッドが直接使用されています | 4 | false | No |
SV.WEAK.CRYPT | 破られたまたは危険な暗号化アルゴリズムの使用 | 3 | true | No |
SV.XPATH | 未検証のユーザ入力が XPath 式として使用されています | 2 | true | Yes |
SV.XSS.DB | クロスサイト スクリプティング (Stored XSS) | 2 | true | Yes |
SV.XSS.REF | クロスサイト スクリプティング (Reflected XSS) | 2 | true | Yes |
SYNCH.NESTED | 同期化されたメソッドが同じロックを保持する別の同期化されたメソッドを呼び出しています | 4 | true | No |
SYNCH.NESTEDS | 同期化された static メソッドが同じロックを保持する別の同期化された static メソッドを呼び出しています | 4 | true | No |
UC.BOOLB | ブール式からの new Boolean オブジェクトの作成は不要です | 4 | true | No |
UC.BOOLS | 文字列式からの new Boolean オブジェクトの作成は不要です | 4 | true | No |
UC.STRS | 文字列式からの new String オブジェクトの作成は不要です | 4 | true | No |
UC.STRV | 空の文字列オブジェクトの作成は不要です | 4 | true | No |
UF.IMAGEIO | 閉じた ImageIO ストリームの利用 | 2 | true | No |
UF.IN | 閉じた入力ストリームの利用 | 2 | true | No |
UF.JNDI | 閉じた JNDI コンテキストの利用 | 2 | true | No |
UF.MAIL | 閉じた Java mail オブジェクトの利用 | 2 | true | No |
UF.MICRO | 閉じた Java Microedition 接続の利用 | 2 | true | No |
UF.NIO | 閉じた NIO オブジェクトの利用 | 2 | true | No |
UF.OUT | 閉じた出力ストリームの利用 | 2 | true | No |
UF.SOCK | 閉じたソケットの利用 | 2 | true | No |
UF.SQLCON | 閉じた SQL 接続の利用 | 2 | true | No |
UF.SQLOBJ | 閉じた SQL オブジェクトの利用 | 2 | true | No |
UF.ZIP | 閉じた Zip ファイルの利用 | 2 | true | No |
UMC.EXIT | System.exit() メソッドの呼び出しは好ましくありません | 4 | false | No |
UMC.GC | System.gc() メソッドの呼び出しは好ましくありません | 4 | false | No |
UMC.SYSERR | System.err メソッドの呼び出しを使用したデバッグ プリントは好ましくありません | 4 | false | No |
UMC.SYSOUT | System.out メソッドの呼び出しを使用したデバッグ プリントは好ましくありません | 4 | false | No |
UMC.TOSTRING | 不要な toString() メソッドが String 引数に対して呼び出されています | 4 | true | No |