Ron*_*fin 251 java eclipse warnings compiler-warnings suppress-warnings
@SuppressWarnings
Java 中有效警告名称的列表是什么?
进来之间的("")
位@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(列表)相同的令牌列表.
其他人会相似但有所不同.
Mar*_*lty 48
允许所有值(忽略未识别的值).已识别的列表是特定于编译器的.
在Java教程 unchecked
和deprecation
被列为Java语言规范所要求的两个警告,因此,他们应该与所有编译器有效:
每个编译器警告都属于一个类别.Java语言规范列出了两个类别:弃用和未选中.
定义它们的Java语言规范中的特定部分在不同版本中不一致.在Java SE 8规范中unchecked
,deprecation
在9.6.4.5节中列为编译器警告.@SuppressWarnings和9.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
- 空
- 未选中
- 下通
- 路径
- 串行
- 最后
- 覆盖
我注意到可以在IntelliJ//noinspection
中自动生成
@SuppressWarninigs
在声明之前还没有计划//noinspection
按Alt+Enter自动生成特定内容,然后使用向右箭头键查看“抑制...”选项当我想抑制来自 IntelliJ 的“开关案例标签太少”警告时,就到了这里。我没有找到 IntelliJ@SuppressWarning
支持的完整列表,但//noinspection
它为我解决了这个问题。
我最喜欢的是@SuppressWarnings("WeakerAccess")
IntelliJ,当它认为你应该拥有比你使用的更弱的访问修饰符时,它不会抱怨它.我们必须拥有一些支持测试的方法的公共访问权限,并且@VisibleForTesting
注释不会阻止警告.
ETA:"匿名"评论,在@MattCampbell链接的页面上,以下令人难以置信的有用说明:
您不应该将此列表用于您描述的目的.如果您要求,IntelliJ会自动为您添加这些SuppressWarnings.它已经能够为我记忆中的许多版本做到这一点.
只需转到您有警告的位置并键入Alt-Enter(如果您在那里看到它,则在检查列表中选择它).当菜单出现时,显示警告并提供为您修复它(例如,如果警告是"方法可能是静态的",那么"make static"是IntellJ为您修复它的提议),而不是选择"输入",只需使用右箭头按钮即可访问子菜单,其中包含"编辑检查配置文件设置"等选项.在此列表的底部将是"禁止所有类检查","类的抑制","方法的抑制",偶尔"抑制语句"等选项.您可能希望列表中最后一个出现在最后.选择其中一个将在代码中添加@SuppressWarnings注释(或在某些情况下注释),以抑制相关警告.您无需猜测要添加的注释,因为IntelliJ将根据您选择的警告进行选择.
归档时间: |
|
查看次数: |
140181 次 |
最近记录: |