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

Ron*_*fin 251 java eclipse warnings compiler-warnings suppress-warnings

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

进来之间的("")@SuppressWarnings("").

cle*_*tus 241

这取决于您的IDE或编译器.

以下是Eclipse Galileo 的列表:

  • 所有要压制所有警告
  • 拳击以禁止相对于装箱/拆箱操作的警告
  • 强制转换以抑制与强制转换操作相关的警告
  • dep-ann禁止相对于已弃用的注释的警告
  • 弃用以抑制相对于弃用的警告
  • 通过实现来抑制相对于switch语句中缺少中断的警告
  • 最后压制相对于最终阻止不返回的警告
  • 隐藏以抑制相对于隐藏变量的本地人的警告
  • 不完全切换以禁止相对于switch语句中缺少条目的警告(枚举案例)
  • nls禁止相对于非nls字符串文字的警告
  • null以禁止相对于null分析的警告
  • 禁止相对于使用不鼓励或禁止引用的警告
  • 用于禁止相对于可序列化类缺少serialVersionUID字段的警告的serial
  • static-access以禁止相对于不正确的静态访问的警告
  • 合成访问以抑制与内部类的未优化访问相关的警告
  • 取消选中以禁止相对于未经检查的操作的警告
  • unqualified-field-access禁止相对于字段访问的警告不合格
  • 未使用的抑制相对于未使用的代码警告

Indigo 列表添加:

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

Juno 列表添加:

  • 资源打压相对警告类型可关闭的资源的使用
  • sync-override用于在覆盖同步方法时因为缺少同步而禁止显示警告

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

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

  • @cletus:是否有可能在eclipse中添加警告类型?问题是我们的一个团队成员使用IntelliJ,并且该IDE还有其他抑制警告类型,它们在Eclipse中发出警告:)在Eclipse Indigo中,您可以在首选项中设置:忽略未使用的SuppressWarnings令牌,但这似乎不起作用... (2认同)
  • 链接已损坏 (2认同)

Mar*_*lty 48

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

Java教程 uncheckeddeprecation被列为Java语言规范所要求的两个警告,因此,他们应该与所有编译器有效:

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

定义它们的Java语言规范中的特定部分在不同版本中不一致.在Java SE 8规范中unchecked,deprecation9.6.4.5节中列为编译器警告.@SuppressWarnings9.6.4.6 @Deprecated分别.

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

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


D. *_*ski 41

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

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

Sun JDK(1.6)有一个较短的支持警告列表:

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

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

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

  • 他们都.通过设置编译器标志,您可以告诉编译器您需要什么样的警告.使用注释,您可以在代码中的特定位置禁止这些警告. (3认同)
  • 我试过@SuppressWarnings("rawtypes")并且它有效 (3认同)
  • 我在Eclipse 3.5中尝试了@SuppressWarnings("raw")并且它不起作用 - 我得到一个警告,它"raw"不是这个注释的有效值. (2认同)

hb0*_*hb0 9

我注意到可以在IntelliJ//noinspection中自动生成

  • 确保您@SuppressWarninigs在声明之前还没有计划
  • 现在,您可以在选择警告时//noinspectionAlt+Enter自动生成特定内容,然后使用向右箭头键查看“抑制...”选项

当我想抑制来自 IntelliJ 的“开关案例标签太少”警告时,就到了这里。我没有找到 IntelliJ@SuppressWarning支持的完整列表,但//noinspection它为我解决了这个问题。

  • 您也可以为此添加 @SuppressWarnings("SwitchStatementWithTooFewBranches") 。 (4认同)

bar*_*lay 6

我最喜欢的是@SuppressWarnings("WeakerAccess")IntelliJ,当它认为你应该拥有比你使用的更弱的访问修饰符时,它不会抱怨它.我们必须拥有一些支持测试的方法的公共访问权限,并且@VisibleForTesting注释不会阻止警告.

ETA:"匿名"评论,在@MattCampbell链接的页面上,以下令人难以置信的有用说明:

您不应该将此列表用于您描述的目的.如果您要求,IntelliJ会自动为您添加这些SuppressWarnings.它已经能够为我记忆中的许多版本做到这一点.

只需转到您有警告的位置并键入Alt-Enter(如果您在那里看到它,则在检查列表中选择它).当菜单出现时,显示警告并提供为您修复它(例如,如果警告是"方法可能是静态的",那么"make static"是IntellJ为您修复它的提议),而不是选择"输入",只需使用右箭头按钮即可访问子菜单,其中包含"编辑检查配置文件设置"等选项.在此列表的底部将是"禁止所有类检查","类的抑制","方法的抑制",偶尔"抑制语句"等选项.您可能希望列表中最后一个出现在最后.选择其中一个将在代码中添加@SuppressWarnings注释(或在某些情况下注释),以抑制相关警告.您无需猜测要添加的注释,因为IntelliJ将根据您选择的警告进行选择.