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教程中, unchecked
和deprecation
被列为“Java语言规范”所要求的两个警告,因此它们应该对所有编译器都有效:
每个编译器警告属于一个类别。 Java语言规范列出了两个类别:弃用和未选中。
“ Java语言规范”中定义的特定部分在各个版本中不一致。 在Java SE 8规范中unchecked
和deprecation
在9.6.4.5节中被列为编译器警告。 @SuppressWarnings和9.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。 鼓励供应商进行合作,确保在多个编译器中使用相同的名称。