Java中有效的@SuppressWarnings警告名称列表是什么?

问题

Java中有效的@SuppressWarnings警告名称列表是什么?

位于("")in@SuppressWarnings("")之间的位。


#1 热门回答(218 赞)

这取决于你的IDE或编译器。

这是Eclipse Galileo的alist

all禁止所有警告拳击以禁止相对于装箱/拆箱操作的警告施放以禁止相对于投射操作dep-ann的警告以抑制相对于弃用注释弃用的警告以抑制相对于弃用突破的警告以抑制相对于丢失中断的警告switch语句最终抑制相对于finally块的警告,不返回隐藏以抑制相对于隐藏变量的本地隐藏的警告 - 禁止相对于switch语句中缺少条目的警告(枚举情况)nls来禁止相对于非警告-nls string literals null以禁止相对于null分析限制的警告,以禁止相对于使用不鼓励或禁止的引用的警告串行来抑制相对于可序列化类的缺少serialVersionUID字段的警告静态访问以抑制相对于不正确的静态访问合成的警告 - 获得抑制警告的权利相对于未经检查的内部类的未优化访问,相对于未经检查的操作,取消相对于未经检查的操作的gs unqualified-field-access以禁止相对于字段访问的警告不合格未使用以禁止相对于未使用的代码的警告

List为Indigo添加:

javadoc抑制相对于javadoc警告的警告rawtypes以抑制相对于原始类型的使用的警告static-method来抑制相对于可以声明为static super的方法的警告,以抑制相对于覆盖没有超级调用的方法的警告

List为Juno补充道:

资源以抑制与使用类型为Closeable sync-override的资源相关的警告,以便在重写同步方法时因为缺少同步而禁止警告

Kepler和Luna使用与Juno(list)相同的令牌列表。

其他人会相似但有所不同。


#2 热门回答(45 赞)

允许所有值(忽略未识别的值)。已识别的列表是特定于编译器的。

因此,InThe Java Tutorialsuncheckeddeprecation被列为Java语言规范所要求的两个警告,它们应该对所有编译器有效:

每个编译器警告属于一个类别。 Java语言规范列出了两个类别:弃用和未选中。

定义它们的特定部分The Java Language Specification在不同版本中不一致。在Java SE 8规范uncheckeddeprecation中列为编译器警告的部分9.6.4.5。 @SuppressWarnings 5​​72063184和9.6.4.6 @Deprecated**,分别。

对于Sun的编译器,运行javac -X将列出该版本识别的所有值的列表。对于1.5.0_17,列表似乎是:

  • 所有
  • 弃用
  • 未经检查
  • 通过
  • 路径
  • 连续
  • 终于

#3 热门回答(34 赞)

该列表是特定于编译器的。但这是在Eclipse支持的值:

allDeprecation弃用甚至在弃用的代码中allJavadoc无效或缺少javadoc assertIdentifier assert的出现用作标识符自动装箱转换charConcat当字符串连接中使用char数组而未显式转换为字符串conditionAssign可能意外的布尔赋值constructorName方法带有构造函数名称dep-ann缺失@Deprecated注释弃用弃用类型或弃用代码之外的成员不鼓励使用与不鼓励的访问规则匹配的类型emptyBlock未记录的空块enumSwitch,不完整切换不完整枚举开关通过可能的直通案例fieldHiding字段隐藏另一个变量finalBound带有最终绑定的类型参数最后阻止不正常完成禁止使用匹配禁止访问规则隐藏宏的类型,用于fieldHiding,localHiding,typeHiding和maskedCatchBlock indirectStatic间接引用static membe r intfAnnotation注释类型用作超级接口intfNonInherited接口非继承方法兼容性javadoc无效javadoc localHiding本地变量隐藏另一个变量maskedCatchBlocks hidden catch block nls non-nls string literals(缺少标签// $ NON-NLS-)noEffectAssign赋值为no效果null潜在缺失或冗余null检查nullDereference缺少null检查over-ann缺失@Override注释paramAssign赋值给参数pkgDefaultMethod尝试覆盖package-default方法原始用法a原始类型(而不是参数化类型)分号不必要的分号或空语句序列缺少serialVersionUID specialParamHiding构造函数或setter参数隐藏另一个字段static-access宏用于indirectStatic和staticReceiver staticReceiver如果非静态接收器用于获取静态字段或调用静态方法超级覆盖方法而不进行超级调用抑制启用@ SuppressWar nings syntheticAccess,对内部任务执行合成访问时的合成访问启用对源代码类型中的任务标记的支持隐藏类型参数隐藏另一种类型未经检查的未检查类型操作unwantedElse不必要的else子句unqualified-field-access,unqualifiedField对未使用的宏的未使用的宏的未限定引用for unusedArgument ,unusedImport,unusedLabel,unusedLocal,unusedPrivate和unusedThrown unusedArgument unused方法参数unusedImport未使用的导入引用unusedLabel未使用的标签unusedLocal未使用的局部变量unusedPrivate未使用的私有成员声明unusedThrown未使用的声明抛出异常uselessTypeCheck不必要的cast / instanceof操作varargsCast varargs参数需要显式转换warningToken未处理的警告@SuppressWarnings中的令牌

Sun JDK(1.6)支持更短的list警告:

弃用检查折旧项目的使用。 unchecked提供Java语言规范强制要求的未经检查的转换警告的更多详细信息。 serial关于序列化类上缺少serialVersionUID定义的警告。最后警告关于无法正常完成的最终条款。 fallthrough检查掉落情况下的切换块,并为找到的任何内容提供警告消息。 path检查环境路径中不存在的路径(例如classpath)。

mac的最新可用javac(1.6.0_13)具有以下支持的警告

all cast deprecation divzero empty unchecked fallthrough path serial finally覆盖