网址: https://docs.roguewave.com/en/klocwork/current/javacheckerreference
检查员代码 | 描述 | 默认严重性 | 默认启用? | 可调参数? |
---|---|---|---|---|
ANDROID.LIFECYCLE.SV.FRAGMENTINJ | 未经验证的片段类名称 | 1 | 真正 | 没有 |
ANDROID.LIFECYCLE.SV.GETEXTRA | 未经验证的外部数据 | 3 | 真正 | 没有 |
ANDROID.NPE | 取消引用Android应用程序中的空值 | 4 | 真正 | 是 |
ANDROID.RLK.MEDIAPLAYER | 媒体播放器退出时不会被释放 | 1 | 真正 | 是 |
ANDROID.RLK.MEDIARECORDER | 媒体记录器在退出时不会被释放 | 1 | 真正 | 是 |
ANDROID.RLK.SQLCON | 退出时不关闭SQL连接 | 1 | 真正 | 是 |
ANDROID.RLK.SQLOBJ | 退出时不关闭Sql对象 | 1 | 真正 | 是 |
ANDROID.UF.BITMAP | 使用循环位图 | 2 | 真正 | 是 |
ANDROID.UF.CAMERA | 使用已发布的相机 | 2 | 真正 | 是 |
ANDROID.UF.MEDIAPLAYER | 使用已发布的媒体播放器 | 2 | 真正 | 是 |
ANDROID.UF.MEDIARECORDER | 使用已发布的媒体记录器 | 2 | 真正 | 是 |
CMP.CLASS | 按类名比较 | 4 | 假 | 没有 |
CMPF.FLOAT | 应避免对浮点类型进行等式检查 | 4 | 真正 | 没有 |
CMP.OBJ | 使用==比较对象 | 4 | 真正 | 没有 |
CMP.STR | 将字符串与==进行比较 | 4 | 真正 | 没有 |
COV.CMP | 方法compareTo()应该有签名'public int compareTo(Object)' | 4 | 真正 | 没有 |
ECC.EMPTY | 空捕获条款 | 4 | 真正 | 没有 |
EHC.EQ | 类定义hashCode()但不定义equals() | 4 | 真正 | 没有 |
EHC.HASH | 类定义equals()但不定义hashCode() | 4 | 真正 | 没有 |
ESCMP.EMPTYSTR | 低效的空字符串比较 | 4 | 真正 | 没有 |
EXC.BROADTHROWS | 方法有一个过于宽泛的抛出声明 | 4 | 真正 | 没有 |
FIN.EMPTY | 应删除空的finalize()方法 | 3 | 真正 | 没有 |
FIN.NOSUPER | finalize()方法的实现应该调用super.finalize() | 3 | 真正 | 没有 |
FSC.PRT | 类及其超类具有相同名称的受保护字段 | 4 | 假 | 没有 |
FSC.PRV | 类及其超类具有相同名称的私有字段 | 4 | 假 | 没有 |
FSC.PUB | 类及其超类具有相同名称的公共字段 | 4 | 假 | 没有 |
JD.BITCMP | 在表达式中使用非短路逻辑 | 3 | 真正 | 没有 |
JD.BITMASK | 位操作可能出错 | 3 | 真正 | 没有 |
JD.BITR | 冗余的表达 | 3 | 真正 | 没有 |
JD.CALL.WRONGSTATIC | 通过实例引用调用静态方法 | 4 | 真正 | 没有 |
JD.CAST.COL | 集合可能的ClassCastException | 4 | 真正 | 没有 |
JD.CAST.KEY | 用于从集合中检索元素的可疑密钥类型 | 4 | 真正 | 没有 |
JD.CAST.SUSP | 不同类型可能的ClassCastException | 4 | 真正 | 没有 |
JD.CAST.UPCAST | 子类型可能的ClassCastException | 4 | 真正 | 没有 |
JD.CATCH | 捕获运行时异常 | 4 | 真正 | 没有 |
JD.CONCUR | 可能的ConcurrentModificationException | 3 | 真正 | 没有 |
JD.EQ.ARR | 在数组上调用'equals' | 4 | 真正 | 没有 |
JD.EQ.UTA | 在不兼容的类型(数组和非数组)上调用'equals' | 4 | 真正 | 没有 |
JD.EQ.UTC | 在不兼容的类型上调用equals | 4 | 真正 | 没有 |
JD.FINRET | 最后回到里面 | 4 | 真正 | 没有 |
JD.IFBAD | 冗余'if'语句 | 3 | 真正 | 没有 |
JD.IFEMPTY | 冗余'if'语句。未完成的代码 | 3 | 真正 | 没有 |
JD.INF.AREC | 表观无限递归 | 4 | 真正 | 没有 |
JD.INST.TRUE | 冗余'instanceof'条件 | 4 | 真正 | 没有 |
JD.LIST.ADD | 容器增加了自己 | 4 | 真正 | 没有 |
JD.LOCK | 锁定没有解锁 | 2 | 真正 | 是 |
JD.LOCK.NOTIFY | 方法'notify'通过持有锁来调用 | 4 | 真正 | 没有 |
JD.LOCK.SLEEP | 方法'sleep'用锁定调用 | 4 | 真正 | 没有 |
JD.LOCK.WAIT | 方法'wait'在持有锁的情况下调用 | 4 | 真正 | 没有 |
JD.METHOD.CBS | 方法可以是静态的 | 4 | 假 | 没有 |
JD.NEXT | 可能'NoSuchElementException' | 4 | 真正 | 是 |
JD.OVER | 不匹配的覆盖 | 4 | 真正 | 没有 |
JD.RC.EXPR.CHECK | 测试表达总是正确的 | 4 | 真正 | 没有 |
JD.RC.EXPR.DEAD | 冗余检查导致死代码 | 4 | 假 | 没有 |
JD.ST.POS | 方法'indexOf'的检查不正确 | 4 | 真正 | 没有 |
JD.SYNC.DCL | 双重检查锁定 | 4 | 真正 | 没有 |
JD.SYNC.IN | 同步不一致 | 4 | 真正 | 没有 |
JD.THREAD.RUN | 显式调用'Thread.run'方法 | 4 | 真正 | 没有 |
JD.UMC.FINALIZE | 显式调用方法'Object.finalize' | 3 | 真正 | 没有 |
JD.UMC.RUNFIN | 调用runFinalizersOnExit() | 3 | 真正 | 没有 |
JD.UMC.WAIT | 等待调用不正确的对象 | 4 | 真正 | 没有 |
JD.UNCAUGHT | 未捕获的异常 | 4 | 真正 | 没有 |
JD.UN.MET | 未使用的非私有方法 | 4 | 假 | 没有 |
JD.UNMOD | 修改不可修改的集合 | 2 | 真正 | 是 |
JD.UN.PMET | 未使用的私有方法 | 3 | 真正 | 没有 |
JD.VNU | 分配后从未读取变量 | 4 | 真正 | 没有 |
JD.VNU.NULL | 在分配null之后,永远不会读取变量 | 4 | 真正 | 没有 |
MNA.CAP | 方法名称应以非大写字母开头 | 4 | 真正 | 没有 |
MNA.CNS | 方法名称与构造函数名称相同,但它不是构造函数 | 4 | 真正 | 没有 |
MNA.SUS | 可疑的方法名称 | 4 | 真正 | 没有 |
NPE.COND | 空指针取消引用,其中null来自条件 | 1 | 真正 | 是 |
NPE.CONST | 空指针取消引用,其中null来自常量 | 1 | 真正 | 是 |
NPE.RET | 取消引用从方法返回的空值 | 1 | 真正 | 是 |
NPE.RET.UTIL | 取消引用从地图或集合返回的空值 | 1 | 真正 | 是 |
NPE.STAT | 空指针取消引用返回值(统计) | 4 | 假 | 是 |
REDUN.DEF | 表达式赋予自身 | 4 | 真正 | 没有 |
REDUN.EQ | 可疑的equals()在两边都用相同的表达式调用 | 4 | 真正 | 没有 |
REDUN.EQNULL | 用表达式调用的可疑equals()和null(从不为真) | 4 | 真正 | 没有 |
REDUN.FINAL | 冗余'最终'修饰符 | 4 | 真正 | 没有 |
REDUN.NULL | 使用变量而不是null常量 | 4 | 真正 | 没有 |
REDUN.OP | 双方同样表达的可疑操作 | 4 | 真正 | 没有 |
RI.IGNOREDCALL | 忽略在不可变对象上调用的方法返回的值 | 4 | 真正 | 没有 |
RI.IGNOREDNEW | 新创建的对象将被忽略 | 4 | 真正 | 没有 |
RLK.AWT | AWT对象未在出口处处理 | 1 | 真正 | 是 |
RLK.FIELD | 存储在字段中的系统资源可能泄漏 | 4 | 真正 | 没有 |
RLK.HIBERNATE | 退出时不关闭Hibernate对象 | 1 | 真正 | 是 |
RLK.IMAGEIO | 退出时不关闭ImageIO流 | 1 | 真正 | 是 |
RLK.IN | 输出流在退出时未关闭 | 1 | 真正 | 是 |
RLK.JNDI | 退出时不关闭JNDI上下文 | 1 | 真正 | 是 |
RLK.MAIL | 退出时不关闭Java邮件对象 | 1 | 真正 | 是 |
RLK.MICRO | 退出时未关闭Java Microedition连接 | 1 | 真正 | 是 |
RLK.NIO | 退出时NIO对象未关闭 | 1 | 真正 | 是 |
RLK.OUT | 退出时不关闭输出流 | 1 | 真正 | 是 |
RLK.SOCK | 插座未在退出时关闭 | 1 | 真正 | 是 |
RLK.SQLCON | 退出时不关闭SQL连接 | 1 | 真正 | 是 |
RLK.SQLOBJ | 退出时不关闭Sql对象 | 1 | 真正 | 是 |
RLK.SWT | SWT对象未在出口处放置 | 1 | 真正 | 是 |
RLK.ZIP | Zip文件在退出时未关闭 | 1 | 真正 | 是 |
RNU.THIS | 比较这和null但不能为空 | 4 | 真正 | 没有 |
RR.IGNORED | 返回的值将被忽略 | 4 | 真正 | 没有 |
RTC.CALL | 类型转换是多余的 | 4 | 真正 | 没有 |
STRCON.LOOP | 在循环中使用append for string | 4 | 真正 | 没有 |
SV.CLASSDEF.INJ | 运行时类定义注入 | 2 | 真正 | 没有 |
SV.CLASSLOADER.INJ | 类加载器URL注入 | 2 | 真正 | 没有 |
SV.CLEXT.CLLOADER | 类扩展'java.lang.ClassLoader' | 4 | 假 | 没有 |
SV.CLEXT.POLICY | 类扩展'java.security.Policy' | 4 | 假 | 没有 |
SV.CLLOADER | 直接使用Classloader | 4 | 假 | 没有 |
SV.CLONE.SUP | 类实现'clone'方法但不实现Cloneable | 4 | 假 | 没有 |
SV.CSRF.GET | GET请求中的CSRF令牌 | 4 | 假 | 是 |
SV.CSRF.ORIGIN | 没有原始检查的请求处理程序 | 4 | 假 | 是 |
SV.CSRF.TOKEN | 状态更改请求处理程序没有CSRF检查 | 4 | 假 | 是 |
SV.DATA.BOUND | 不受信任的数据泄漏到可信存储中 | 3 | 真正 | 是 |
SV.DATA.DB | 数据注入 | 2 | 真正 | 是 |
SV.DOS.ARRINDEX | 用于阵列访问的污点索引 | 3 | 真正 | 是 |
SV.DOS.ARRSIZE | 用于阵列分配的污点大小 | 3 | 真正 | 是 |
SV.DOS.TMPFILEDEL | 保留JVM生命周期的临时文件 | 3 | 真正 | 是 |
SV.DOS.TMPFILEEXIT | 留下临时档案 | 3 | 真正 | 是 |
SV.ECV | 空证书验证 | 4 | 假 | 没有 |
SV.EMAIL | 未经检查的电子邮件 | 2 | 真正 | 是 |
SV.EXEC | 工艺注射 | 2 | 真正 | 是 |
SV.EXEC.DIR | 工艺注射。工作目录 | 2 | 真正 | 是 |
SV.EXEC.ENV | 工艺注射。环境变量 | 2 | 真正 | 是 |
SV.EXEC.LOCAL | 工艺注射。本地论点 | 3 | 真正 | 没有 |
SV.EXPOSE.FIELD | 静态字段可能被恶意代码更改 | 4 | 假 | 没有 |
SV.EXPOSE.FIN | 方法finalize()应该有受保护的访问修饰符,而不是public | 4 | 假 | 没有 |
SV.EXPOSE.IFIELD | 实例字段应该是最终的 | 4 | 假 | 没有 |
SV.EXPOSE.MUTABLEFIELD | 恶意代码可以访问静态可变字段 | 4 | 假 | 没有 |
SV.EXPOSE.RET | 内部代表可能会暴露 | 4 | 假 | 没有 |
SV.EXPOSE.STORE | 方法存储对可变对象的引用 | 4 | 假 | 没有 |
SV.HASH.NO_SALT | 使用没有盐的单向加密哈希 | 3 | 真正 | 没有 |
SV.HTTP_SPLIT | Http响应分裂 | 2 | 真正 | 是 |
SV.IL.DEV | 设计信息泄漏 | 3 | 真正 | 是 |
SV.IL.FILE | 文件名泄漏 | 3 | 真正 | 是 |
SV.INT_OVF | 受污染的数据可能会导致整数溢出 | 2 | 真正 | 是 |
SV.LDAP | 未经验证的用户输入用作LDAP过滤器 | 2 | 真正 | 是 |
SV.LOG_FORGING | 原木锻造 | 3 | 真正 | 是 |
SV.PASSWD.HC | 硬编码密码 | 2 | 真正 | 是 |
SV.PASSWD.HC.EMPTY | 空密码 | 2 | 真正 | 是 |
SV.PASSWD.PLAIN | 纯文本密码 | 2 | 真正 | 是 |
SV.PATH | 路径和文件名注入 | 3 | 真正 | 是 |
SV.PATH.INJ | 文件注入 | 3 | 真正 | 是 |
SV.RANDOM | 使用不安全的随机数发生器 | 4 | 真正 | 没有 |
SV.SCRIPT | 脚本执行 | 2 | 真正 | 是 |
SV.SENSITIVE.DATA | 写入未加密的敏感数据 | 2 | 真正 | 是 |
SV.SENSITIVE.OBJ | 存储具有未加密的敏感数据的对象 | 2 | 真正 | 是 |
SV.SERIAL.INON | 接口扩展'Serializable' | 4 | 假 | 没有 |
SV.SERIAL.NON | 类实现'Serializable' | 4 | 假 | 没有 |
SV.SERIAL.NOREAD | 方法readObject()应该为可序列化的类定义 | 4 | 假 | 没有 |
SV.SERIAL.NOWRITE | 应为可序列化类定义writeObject()方法 | 4 | 假 | 没有 |
SV.SERIAL.SIG | 可序列化类中的readObject()和writeObject()方法应具有正确的签名 | 4 | 假 | 没有 |
SV.SHARED.VAR | 从servlet非同步访问静态变量 | 4 | 真正 | 没有 |
SV.SOCKETS | 不良做法:使用套接字 | 4 | 假 | 没有 |
SV.SQL | Sql注入 | 2 | 真正 | 是 |
SV.SQL.DBSOURCE | SQL语句中使用来自数据库的未经检查的信息 | 3 | 真正 | 是 |
SV.STRBUF.CLEAN | 字符串缓冲区未清理 | 3 | 假 | 是 |
SV.STRUTS.NOTRESET | Struts Forms:不一致的重置 | 4 | 假 | 没有 |
SV.STRUTS.NOTVALID | Struts表单:不一致的验证 | 4 | 假 | 没有 |
SV.STRUTS.PRIVATE | Struts表单:非私有字段 | 4 | 假 | 没有 |
SV.STRUTS.RESETMET | Struts Forms:重置方法 | 4 | 假 | 没有 |
SV.STRUTS.STATIC | Struts表单:静态字段 | 4 | 假 | 没有 |
SV.STRUTS.VALIDMET | Struts Forms:验证方法 | 4 | 假 | 没有 |
SV.TAINT | 污染的数据 | 3 | 假 | 是 |
SV.TAINT_NATIVE | 受污染的数据转到本机代码 | 3 | 真正 | 是 |
SV.TMPFILE | 临时文件路径篡改 | 3 | 真正 | 是 |
SV.UMC.EXIT | 不应在servlet代码中使用System.exit()和Runtime.exit()方法调用 | 4 | 假 | 没有 |
SV.UMC.JDBC | 应用程序应避免直接调用DriverManager.getConnection() | 4 | 假 | 没有 |
SV.UMC.THREADS | 糟糕的做法:使用线程管理 | 4 | 假 | 没有 |
SV.UMD.MAIN | 剩下的调试代码 - 主要方法 | 4 | 假 | 没有 |
SV.USE.POLICY | 直接使用政策方法 | 4 | 假 | 没有 |
SV.WEAK.CRYPT | 使用破碎或危险的密码算法 | 3 | 真正 | 没有 |
SV.XPATH | 未经验证的用户输入用作XPath表达式 | 2 | 真正 | 是 |
SV.XSS.DB | 跨站点脚本(存储的XSS) | 2 | 真正 | 是 |
SV.XSS.REF | 跨站点脚本(反射XSS) | 2 | 真正 | 是 |
SYNCH.NESTED | 同步方法使用相同的锁定调用另一个同步方法 | 4 | 真正 | 没有 |
SYNCH.NESTEDS | 同步静态方法使用相同的锁定调用另一个同步静态方法 | 4 | 真正 | 没有 |
UC.BOOLB | 从布尔表达式中不必要地创建新的Boolean对象 | 4 | 真正 | 没有 |
UC.BOOLS | 从字符串表达式中不必要地创建新的Boolean对象 | 4 | 真正 | 没有 |
UC.STRS | 从字符串表达式中不必要地创建新的String对象 | 4 | 真正 | 没有 |
UC.STRV | 不必要的创建空String对象 | 4 | 真正 | 没有 |
UF.IMAGEIO | 使用已关闭的ImageIO流 | 2 | 真正 | 没有 |
UF.IN | 封闭输入流的使用 | 2 | 真正 | 没有 |
UF.JNDI | 使用已关闭的JNDI上下文 | 2 | 真正 | 没有 |
UF.MAIL | 使用已关闭的Java邮件对象 | 2 | 真正 | 没有 |
UF.MICRO | 使用已关闭的Java Microedition连接 | 2 | 真正 | 没有 |
UF.NIO | 使用已关闭的NIO对象 | 2 | 真正 | 没有 |
UF.OUT | 使用封闭的输出流 | 2 | 真正 | 没有 |
UF.SOCK | 封闭插座的用法 | 2 | 真正 | 没有 |
UF.SQLCON | 使用封闭的SQL连接 | 2 | 真正 | 没有 |
UF.SQLOBJ | 使用已关闭的SQL对象 | 2 | 真正 | 没有 |
UF.ZIP | 使用封闭的zip文件 | 2 | 真正 | 没有 |
UMC.EXIT | System.exit()方法调用是不需要的 | 4 | 假 | 没有 |
UMC.GC | System.gc()方法调用是不需要的 | 4 | 假 | 没有 |
UMC.SYSERR | 使用System.err方法调用的调试打印是不需要的 | 4 | 假 | 没有 |
UMC.SYSOUT | 使用System.out方法调用的调试打印是不需要的 | 4 | 假 | 没有 |
UMC.TOSTRING | 不必要的toString()方法调用String参数 | 4 | 真正 | 没有 |