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

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

("")@SuppressWarnings("")

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

以下是Eclipse Galileo的列表 :

  • 全部压制所有警告
  • 拳击来压制相对于拳击/拆箱操作的警告
  • 施放压制相对于演员操作的警告
  • dep-ann禁止相对于不推荐使用的注释的警告
  • 弃用来压制相对于弃用的警告
  • 突破,以抑制相对于交换语句缺失的警告
  • 最后是相对于最后阻止不要返回的阻止警告
  • 隐藏相对于隐藏variables的本地人的警告
  • 用于禁止switch语句中相对于缺less条目的警告(枚举大小写)
  • 禁止相对于非nlsstring文字的警告
  • null以禁止相对于空分析的警告
  • 限制压制有关使用劝阻或禁止引用的警告
  • 串行来抑制相对于serializable类缺lessserialVersionUID字段的警告
  • 静态访问来抑制相对于不正确的静态访问的警告
  • 合成访问来抑制相对于来自内部类的未优化访问的警告
  • 取消选中相对于未经检查的操作的警告
  • 不合格现场访问相对于现场访问压制警告不合格
  • 没有用来抑制相对于未使用的代码的警告

靛蓝添加列表 :

  • javadoc压制相对于javadoc警告的警告
  • 原始types来抑制相对于原始types使用的警告
  • 静态方法来抑制相对于可以被声明为静态的方法的警告
  • 超级压制警告相对于重写方法没有超级调用

Juno 列表增加:

  • 资源来抑制与Closeabletypes资源的使用相关的警告
  • sync-override来取消警告,因为在重写同步方法时丢失了同步

开普勒和卢娜使用与Juno( 列表 )相同的标记列表。

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

所有值都是允许的(无法识别的值将被忽略)。 公认的列表是编译器特定的。

在Java教程中, uncheckeddeprecation被列为“Java语言规范”所要求的两个警告,因此它们应该对所有编译器都有效:

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

“ Java语言规范”中定义的特定部分在各个版本中不一致。 在Java SE 8规范中uncheckeddeprecation9.6.4.5节中被列为编译器警告 @SuppressWarnings9.6.4.6 @Deprecated ,分别。

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

  • 所有
  • 弃用
  • 未选中
  • 下通
  • path
  • 串行
  • 最后

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

  • allDeprecation弃用,即使在弃用的代码
  • allJavadoc无效或缺lessjavadoc
  • 用作标识符的断言assertIdentifier的出现
  • 拳击自动转换
  • 当char数组用于string连接而不显式转换为string时charConcat
  • conditionAssign可能的意外布尔分配
  • 带构造函数名的constructorName方法
  • dep-ann缺less@Deprecated注释
  • 弃用代码以外的弃用types或成员的弃用用法
  • 不鼓励使用匹配劝阻访问规则的types
  • emptyBlock无证空块
  • 枚举交换机, 不完全交换机不完全枚举交换机
  • 贯穿可能的情况
  • fieldHiding字段隐藏另一个variables
  • finalBoundtypes参数与最后的界限
  • 最后终于阻止不正常完成
  • 禁止使用匹配禁止访问规则的types
  • 为fieldHiding,localHiding,typeHiding和maskedCatchBlock 隐藏macros
  • indirectStatic间接引用静态成员
  • 用作超级接口的intfAnnotation注解types
  • intfNonInherited接口非inheritance方法的兼容性
  • javadoc无效的javadoc
  • localHidden局部variables隐藏另一个variables
  • maskedCatchBlocks隐藏catch块
  • nls非nlsstring文字(缺less标签// $ NON-NLS-)
  • noEffect分配不起作用
  • 潜在缺失或冗余空检查
  • nullDereference缺lessnull检查
  • over-ann缺less@Override注释
  • paramAssign赋值给一个参数
  • pkgDefaultMethod尝试覆盖package-default方法
  • 原始types的原始用法a(而不是参数化types)
  • 分号不必要的分号或空语句
  • 串行缺lessserialVersionUID
  • specialParamHiding构造函数或setter参数隐藏另一个字段
  • staticStatic和staticReceiver的静态访问macros
  • staticReceiver如果使用非静态接收器来获取静态字段或调用静态方法
  • 超级重写一个方法而不需要超级调用
  • 禁止启用@SuppressWarnings
  • 合成访问,对内部类进行合成访问时的合成访问
  • 任务支持源代码中的任务标签
  • typeHiddentypes参数隐藏另一个types
  • 未经检查的未经检查的types操作
  • 不必要的else else子句
  • 不合格场的访问,不合格场的不合格参照
  • 未使用的macrosunusedArgument,unusedImport,unusedLabel,unusedLocal,unusedPrivate和unusedThrown
  • unused参数未使用的方法参数
  • unusedImport未使用的导入参考
  • unusedLabel未使用的标签
  • unusedLocal未使用的局部variables
  • 未使用的私人未使用的私人会员声明
  • unusedThrown未使用的声明抛出的exception
  • uselessTypeCheck不必要的cast / instanceof操作
  • varargsCast可变参数需要显式强制转换
  • 在@SuppressWarnings中的warningToken未处理的警告标记

Sun JDK(1.6)的警告列表较短:

  • 弃用检查折旧项目的使用情况。
  • 未经检查为Java语言规范强制规定的未经检查的转换警告提供更多详细信息。
  • serial关于在可序列化类上丢失serialVersionUID定义的警告。
  • 最后终于警告不能正常完成的条款。
  • 贯穿检查开关盒,并提供任何find的警告消息。
  • path检查环境path中不存在的path(如类path)。

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

  • 所有
  • 弃用
  • divzero
  • 未选中
  • 下通
  • path
  • 串行
  • 最后
  • 覆盖

这似乎是一个更完整的列表,在那里我发现了一些特定于Android-Studio的警告,在其他地方我找不到(例如SynchronizeOnNonFinalField)

https://jazzy.id.au/2008/10/30/list_of_suppresswarnings_arguments.html

哦,现在SO的指导方针与SO的限制是矛盾的。 一方面,我应该复制列表,而不是只提供链接。 但另一方面,这将超过允许的最大字符数。 所以我们只希望链接不会中断。

JSL 1.7

Oracle文档提到:

  • unchecked :未经检查的警告通过string“未选中”进行标识。
  • deprecation :当使用注解@Deprecated注释的types,方法,字段或构造函数被使用(即覆盖,调用或引用名称)时,Java编译器必须产生弃用警告,除非:[…]这个用法在一个实体中被注解,用注解@SuppressWarnings(“deprecation”)来压制警告。 要么

然后解释说实现可以添加和logging他们自己的:

编译器供应商应该logging它们支持的警告名称以及这个注释types。 鼓励供应商进行合作,确保在多个编译器中使用相同的名称。