Java 检查器参考

检查器名称 描述 默认严重性 默认情况下是否启用? 是否可调?
ANDROID.LIFECYCLE.SV.FRAGMENTINJ 未经验证的片段类名 1 True
ANDROID.LIFECYCLE.SV.GETEXTRA 外部数据未经验证 3 True
ANDROID.NPE 取消引用 Android 应用程序中的 null 值 4 True
ANDROID.RLK.MEDIAPLAYER 退出时未释放 Media player 1 True
ANDROID.RLK.MEDIARECORDER 退出时未释放 Media recorder 1 True
ANDROID.RLK.SQLCON 退出时未关闭 SQL 连接 1 True
ANDROID.RLK.SQLOBJ 退出时未关闭 SQL 对象 1 True
ANDROID.UF.BITMAP 使用回收的位图 2 True
ANDROID.UF.CAMERA 使用释放的照相机 2 True
ANDROID.UF.MEDIAPLAYER 使用释放的 Media player 2 True
ANDROID.UF.MEDIARECORDER 使用释放的 Media recorder 2 True
CMP.CLASS 按类名进行比较 4 False
CMPF.FLOAT 应避免对浮点类型进行相等性检查 4 True
CMP.OBJ 使用 == 比较对象 4 True
CMP.STR 使用 == 比较字符串 4 True
COV.CMP 方法 compareTo() 应具有签名“public int compareTo(Object)” 4 True
ECC.EMPTY 空 catch 子句 4 True
EHC.EQ 类定义了 hashCode() 但不定义 equals() 4 True
EHC.HASH 类定义了 equals() 但不定义 hashCode() 4 True
ESCMP.EMPTYSTR 低效的空字符串比较 4 True
EXC.BROADTHROWS 方法具有过于广泛的抛出声明 4 True
FIN.EMPTY 应移除 Empty finalize() 方法 3 True
FIN.NOSUPER 要实施 finalize() 方法,应调用 super.finalize() 3 True
FSC.PRT 类及其超类具有同名的受保护字段 4 False
FSC.PRV 类及其超类具有同名的私有字段 4 False
FSC.PUB 类及其超类具有同名的公共字段 4 False
JD.BITCMP 在表达式中使用非短路逻辑 3 True
JD.BITMASK 位运算中可能存在错误 3 True
JD.BITR 冗余表达式 3 True
JD.CALL.WRONGSTATIC 通过实例引用调用静态方法 4 True
JD.CAST.COL.MIGHT 可能存在针对集合的 ClassCastException 4 False
JD.CAST.COL.MUST 用于收集的 ClassCastException 4 True
JD.CAST.DOWNCAST 可能存在针对子类型的 ClassCastException 4 True
JD.CAST.KEY 用于检索集合中元素的键类型可疑 4 True
JD.CAST.SUSP.MIGHT 可能存在针对不同类型的 ClassCastException 4 True
JD.CAST.SUSP.MUST 针对不同类型的 ClassCastException 4 True
JD.CAST.UPCAST 可能存在针对子类型的 ClassCastException 4 True
JD.CATCH 捕获运行时异常 4 True
JD.CONCUR 可能存在 ConcurrentModificationException 3 True
JD.EQ.ARR 对于数组调用“equals” 4 True
JD.EQ.UTA 对于不兼容的类型(数组和非数组)调用 equals 4 True
JD.EQ.UTC 对于不兼容的类型调用 equals 4 True
JD.FINRET finally 中的 Return 4 True
JD.IFBAD 多余的“if”语句 3 True
JD.IFEMPTY 多余的“if”语句。未完成的代码 3 True
JD.INF.ALLOC 无限循环内的分配 4 True
JD.INF.AREC 明显的无限递归 4 True
JD.INST.TRUE 多余的“instanceof”条件 4 True
JD.LIST.ADD 已添加到自身的容器 4 True
JD.LOCK 无解锁的锁 2 True
JD.LOCK.NOTIFY 已调用带持有锁的“notify”方法 4 True
JD.LOCK.SLEEP 已调用带持有锁的“sleep”方法 4 True
JD.LOCK.WAIT 已调用带持有锁的“wait”方法 4 True
JD.METHOD.CBS 方法可以为静态方法 4 False
JD.NEXT 可能存在“NoSuchElementException” 4 True
JD.OVER 不匹配的覆盖 4 True
JD.RC.EXPR.CHECK 测试表达式始终为 true 4 True
JD.RC.EXPR.DEAD 导致死代码的冗余检查 4 False
JD.ST.POS 错误检查方法“indexOf” 4 True
JD.SYNC.DCL 双重检查锁定 4 True
JD.SYNC.IN 不一致的同步 4 True
JD.THREAD.RUN 显式调用“Thread.run”方法 4 True
JD.UMC.FINALIZE 显式调用“Object.finalize”方法 3 True
JD.UMC.RUNFIN 已调用 runFinalizersOnExit() 3 True
JD.UMC.WAIT 对于错误对象调用的 Wait 4 True
JD.UNCAUGHT 未捕获的异常 4 True
JD.UN.MET 未使用的非私有方法 4 False
JD.UNMOD 对不可修改的集合的修改 2 True
JD.UN.PMET 未使用的私有方法 3 True
JD.VNU 在变量分配后从未读取变量 4 True
JD.VNU.NULL 在 null 分配后从未读取变量 4 True
MNA.CAP 方法名称必须以某个非大写字母开头 4 True
MNA.CNS 方法与构造函数同名,但不是构造函数 4 True
MNA.SUS 可疑的方法名称 4 True
NPE.COND 空指针取消引用,其中空值来自条件 1 True
NPE.CONST 空指针取消引用,其中空值来自常数 1 True
NPE.RET 取消引用从方法返回的空值 1 True
NPE.RET.UTIL 取消引用映射或集合返回的空值 1 True
NPE.STAT 取消引用返回值(统计数据)的空指针 4 False
REDUN.DEF 将表达式分配给其自身 4 True
REDUN.EQ 可疑的 equals() 调用,两侧表达式相同 4 True
REDUN.EQNULL 以表达式和空值(永远不可能为 True)进行了可疑的 equals() 调用 4 True
REDUN.FINAL 多余的 final 修饰符 4 True
REDUN.NULL 使用变量替换空常数 4 True
REDUN.OP 可疑的运算,两侧表达式相同 4 True
RI.IGNOREDCALL 已忽略在 immutable 对象上调用的方法返回的值 4 True
RI.IGNOREDNEW 已忽略新创建的对象 4 True
RLK.AWT 退出时未处置 AWT 对象 1 True
RLK.FIELD 在字段中存储的系统资源可能泄露 4 True
RLK.HIBERNATE 退出时未关闭 Hibernate 对象 1 True
RLK.IMAGEIO 退出时未关闭 ImageIO 流 1 True
RLK.IN 退出时未关闭输入流 1 True
RLK.JNDI 退出时未关闭 JNDI 上下文 1 True
RLK.JPA 退出时未关闭 {3} 对象。 1 True
RLK.MAIL 退出时未关闭 Java 邮件对象 1 True
RLK.MICRO 退出时未关闭 Java Microedition 连接 1 True
RLK.NIO 退出时未关闭 NIO 对象 1 True
RLK.OUT 退出时未关闭输出流 1 True
RLK.SOCK 退出时未关闭套接字 1 True
RLK.SQLCON 退出时未关闭 SQL 连接 1 True
RLK.SQLOBJ 退出时未关闭 SQL 对象 1 True
RLK.SWT 退出时未处置 SWT 对象 1 True
RLK.ZIP 退出时未关闭 Zip 文件 1 True
RNU.THIS 比较此值和空值,但此值不能为空值 4 True
RR.IGNORED 已忽略返回的值 4 True
RTC.CALL 转换的类型是冗余的 4 True
SPRING.AUTHC.ABSENT 没有用于关键资源的配置 2 False
SPRING.AUTHC.MISSING 缺少针对关键功能的身份验证 2 True
SPRING.AUTHZ.ABSENT 没有用于受保护资源的配置 2 False
SPRING.AUTHZ.MISSING 缺少授权 2 True
STRCON.LOOP 在循环中对字符串使用 append 4 True
SV.AUTH.BYPASS.MIGHT 不正确的身份验证 2 True
SV.AUTH.BYPASS.MUST 不正确的身份验证 2 True
SV.AUTH.HASH.MIGHT 使用弱加密算法 3 True
SV.AUTH.HASH.MUST 使用弱加密算法 3 True
SV.CLASSDEF.INJ 运行时类定义注入 2 True
SV.CLASSLOADER.INJ 类加载器 URL 注入 2 True
SV.CLEXT.CLLOADER 类扩展了“java.lang.ClassLoader” 4 False
SV.CLEXT.POLICY 类扩展了“java.security.Policy” 4 False
SV.CLLOADER 直接使用 Classloader 4 False
SV.CLONE.SUP 类执行“clone”方法但是不执行 Cloneable 4 False
SV.CSRF.GET GET 请求中的 CSRF 令牌 4 False
SV.CSRF.ORIGIN 无来源检查的请求处理程序 4 False
SV.CSRF.TOKEN 无 CSRF 检查的状态变化请求处理程序 4 False
SV.DATA.BOUND 不受信任的数据泄漏到可信的存储器中 3 True
SV.DATA.DB 数据注入 2 True
SV.DATA.FILE 可能会上传并自动处理潜在的有害文件 4 True
SV.DOS.ARRINDEX 用于数组访问的受污染的索引 3 True
SV.DOS.ARRSIZE 用于数组分配的受污染的 size 3 True
SV.DOS.TMPFILEDEL 在 JVM 的生存期间保留临时文件 3 True
SV.DOS.TMPFILEEXIT 保留临时文件 3 True
SV.ECV 证书验证为空 4 False
SV.EMAIL 未检查的电子邮件 2 True
SV.EXEC 进程注入 2 True
SV.EXEC.DIR 进程注入。工作目录 2 True
SV.EXEC.ENV 进程注入。环境变量 2 True
SV.EXEC.LOCAL 进程注入。本地参数 3 True
SV.EXEC.PATH 不受信任的搜索路径 4 True
SV.EXPOSE.FIELD 静态字段可能被恶意代码更改 4 False
SV.EXPOSE.FIN 方法 finalize() 应该具有 protected 访问修饰符,而非 public 访问修饰符 4 False
SV.EXPOSE.IFIELD 应将实例字段设置为 final 字段 4 False
SV.EXPOSE.MUTABLEFIELD 静态 mutable 字段可由恶意代码访问 4 False
SV.EXPOSE.RET 内部表示形式可能已暴露 4 False
SV.EXPOSE.STORE 方法存储对 mutable 对象的引用 4 False
SV.HASH.NO_SALT 在没有 salt 的情况下使用单向密码哈希 3 True
SV.HTTP_SPLIT Http 响应拆分 2 True
SV.IL.DEV 设计信息泄露 3 True
SV.IL.FILE 文件名泄露 3 True
SV.INT_OVF 被污染的数据可能导致整数溢出 2 True
SV.LDAP 未经验证的用户输入被用作 LDAP 筛选器 2 True
SV.LDAP.ANON 不正确的身份验证 4 True
SV.LOADLIB.INJ 对“loadLibrary”方法的不受信任的调用 4 True
SV.LOG_FORGING 日志伪造 3 True
SV.PASSWD.HC 硬编码密码 2 True
SV.PASSWD.HC.EMPTY 空密码 2 True
SV.PASSWD.PLAIN 纯文本密码 2 True
SV.PASSWD.PLAIN.HC 纯文本密码 2 True
SV.PATH 路径和文件名注入 3 True
SV.PATH.INJ 文件注入 3 True
SV.PERMS.HOME 在未设置权限的情况下在用户主目录中创建了文件 2 True
SV.PERMS.WIDE 权限过宽 4 True
SV.PRIVILEGE.MISSING 调用的方法不得在 doPrivileged 块内 4 True
SV.RANDOM 使用不安全的随机数生成程序 4 True
SV.SCRIPT 脚本执行 2 True
SV.SENSITIVE.DATA 写入了未加密的敏感数据 2 True
SV.SENSITIVE.OBJ 存储了包含未加密的敏感数据的对象 2 True
SV.SERIAL.INON 接口扩展了“Serializable” 4 False
SV.SERIAL.NOFINAL serializable 类中的方法 readObject() 和 writeObject() 应为最终方法 4 False
SV.SERIAL.NON 类实施了“Serializable” 4 False
SV.SERIAL.NOREAD 应为 serializable 类定义方法 readObject() 4 False
SV.SERIAL.NOWRITE 应为 serializable 类定义方法 writeObject() 4 False
SV.SERIAL.OVERRIDE 不要从 readObject() 方法调用可替代的方法 4 True
SV.SERIAL.SIG serializable 类中的方法 readObject() 和 writeObject() 应具有正确的签名 4 False
SV.SHARED.VAR 从 servlet 对静态变量的访问未同步 4 True
SV.SOCKETS 错误做法:使用套接字 4 False
SV.SQL Sql 注入 2 True
SV.SQL.DBSOURCE 在 SQL 语句中使用未检查的数据库信息 3 True
SV.SSRF.URI URI 基于失效的用户输入。 4 True
SV.STRBUF.CLEAN 字符串缓冲区未清除 3 False
SV.STRUTS.NOTRESET Struts 表单:不一致重置 4 False
SV.STRUTS.NOTVALID Struts 表单:不一致验证 4 False
SV.STRUTS.PRIVATE Struts 表单:非私有字段 4 False
SV.STRUTS.RESETMET Struts 表单:重置方法 4 False
SV.STRUTS.STATIC Struts 表单:静态字段 4 False
SV.STRUTS.VALIDMET Struts 表单:验证方法 4 False
SV.STRUTS.VER 易受攻击的 Apache Struts 版本的使用情况 2 True
SV.TAINT 被污染的数据 3 False
SV.TAINT_NATIVE 被污染的数据进入了本机代码 3 True
SV.TMPFILE 篡改临时文件路径 3 True
SV.UMC.EXIT System.exit() 和 Runtime.exit() 方法调用不应用在 servlet 代码中 4 False
SV.UMC.JDBC 应用程序应避免直接调用 DriverManager.getConnection() 4 False
SV.UMC.THREADS 错误做法:使用线程管理 4 False
SV.UMD.MAIN 残留调试代码 - 主方法 4 False
SV.USE.POLICY 直接使用策略方法 4 False
SV.WEAK.CRYPT 使用被破坏的或有风险的加密算法 3 True
SV.XPATH 未经验证的用户输入被用作 XPath 表达式 2 True
SV.XSS.COOKIE 无 setHttpOnly 标记的敏感 Cookie 4 True
SV.XSS.DB 跨站脚本 (Stored XSS) 2 True
SV.XSS.REF 跨站脚本 (Reflected XSS) 2 True
SV.XXE.DBF XML 外部实体攻击的可能性 4 True
SV.XXE.SF XML 外部实体攻击的可能性 4 True
SV.XXE.SPF XML 外部实体攻击的可能性 4 True
SV.XXE.TF XML 外部实体攻击的可能性 4 True
SV.XXE.XIF XML 外部实体攻击的可能性 4 True
SV.XXE.XRF XML 外部实体攻击的可能性 4 True
SYNCH.NESTED 同步方法调用了其他持有相同锁的同步方法 4 True
SYNCH.NESTEDS 同步静态方法调用了其他持有相同锁的同步静态方法 4 True
UC.BOOLB 通过布尔表达式创建的不必要的新布尔对象 4 True
UC.BOOLS 通过字符串表达式创建的不必要的新布尔对象 4 True
UC.STRS 通过字符串表达式创建的不必要的新字符串对象 4 True
UC.STRV 创建的不必要的空字符串对象 4 True
UF.IMAGEIO 使用关闭的 ImageIO 流 2 True
UF.IN 使用关闭的输入流 2 True
UF.JNDI 使用关闭的 JNDI 上下文 2 True
UF.MAIL 使用关闭的 Java 邮件对象 2 True
UF.MICRO 使用关闭的 Java Microedition 连接 2 True
UF.NIO 使用关闭的 NIO 对象 2 True
UF.OUT 使用关闭的输出流 2 True
UF.SOCK 使用关闭的套接字 2 True
UF.SQLCON 使用关闭的 SQL 连接 2 True
UF.SQLOBJ 使用关闭的 SQL 对象 2 True
UF.ZIP 使用关闭的 zip 文件 2 True
UMC.EXIT System.exit() 方法调用并非所需 4 False
UMC.GC System.gc() 方法调用并非所需 4 False
UMC.SYSERR 使用 System.err 方法调用的调试打印并非所需 4 False
UMC.SYSOUT 使用 System.out 方法调用的调试打印并非所需 4 False
UMC.TOSTRING 针对字符串自变量调用的不必要的 toString() 方法 4 True