java代码中全部压制警告,eclipse - Java中有效的@SuppressWarnings警告名称列表是什么?...

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

Java中有效的("")警告名称列表是什么?

在@SuppressWarnings("")中的("")之间的位。

7个解决方案

226 votes

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

以下是Eclipse Galileo的列表:

所有要压制所有警告

拳击以禁止相对于装箱/拆箱操作的警告

强制转换以抑制与强制转换操作相关的警告

dep-ann禁止相对于已弃用的注释的警告

弃用以抑制相对于弃用的警告

通过限制来抑制相对于switch中缺少中断的警告  声明

最后压制相对于最终阻止的警告   返回

隐藏以抑制相对于隐藏变量的本地人的警告

不完全切换以禁止相对于缺少条目的警告   在switch语句中(枚举案例)

nls禁止相对于非nls字符串文字的警告

null以禁止相对于null分析的警告

禁止相对于劝阻或使用劝阻的警告   禁止参考

serial以禁止相对于缺少serialVersionUID的警告   可序列化类的字段

静态访问以抑制相对于不正确静态的警告   访问

合成访问以抑制相对于未优化的警告   从内部类访问

取消选中以禁止相对于未经检查的操作的警告

unqualified-field-access抑制相对于字段的警告   访问不合格

用于禁止相对于未使用代码的警告

Indigo列表添加:

javadoc禁止相对于javadoc警告的警告

rawtypes用于抑制与原始类型的使用相关的警告

static-method来抑制相对于可以声明为static的方法的警告

super来禁止相对于覆盖没有超级调用的方法的警告

Juno列表添加:

用于抑制与使用类型为Closeable的资源相关的警告的资源

sync-override用于在覆盖同步方法时因为缺少同步而禁止显示警告

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

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

cletus answered 2019-02-22T02:31:15Z

47 votes

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

在Java教程javac -X和deprecation中列出了Java语言规范所要求的两个警告,因此,它们应该对所有编译器有效:

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

定义它们的Java语言规范中的特定部分在不同版本中不一致。 Java SE 8规范javac -X和deprecation在9.6.4.5节中列为编译器警告。 @SuppressWarnings和9.6.4.6 @Deprecated分别。

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

所有

弃用

未选中

下通

路径

串行

最后

Martin McNulty answered 2019-02-22T02:32:51Z

36 votes

该列表是特定于编译器的。 但这里是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

合成访问,对内部类执行合成访问时的合成访问

任务支持源代码中的任务标记

typeHiding类型参数隐藏另一种类型

未经检查的未经检查的类型操作

unwantedElse不必要的else子句

unqualified-field-access,unqualifiedField不合格   参考领域

未使用的宏用于unusedArgument,unusedImport,unusedLabel,unusedLocal,unusedPrivate和unusedThrown

unusedArgument未使用的方法参数

unusedImport未使用的导入引用

unusedLabel未使用的标签

unusedLocal未使用的局部变量

unusedPrivate未使用的私有成员声明

unusedThrown未使用的声明抛出异常

uselessTypeCheck不必要的cast / instanceof操作

varargs Cast varargs参数需要显式演员

warningToken @SuppressWarnings中未处理的警告标记

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

弃用检查折旧项目的使用。

unchecked提供Java语言规范强制要求的未经检查的转换警告的更多详细信息。

serial关于序列化类上缺少serialVersionUID定义的警告。

最后警告关于无法正常完成的最终条款。

fallthrough检查掉落情况下的开关块,并为找到的任何内容提供警告消息。

path检查环境路径中不存在的路径(例如classpath)。

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

所有

弃用

divzero

未选中

下通

路径

串行

最后

覆盖

D. Wroblewski answered 2019-02-22T02:43:08Z

4 votes

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

barclay answered 2019-02-22T02:43:40Z

1 votes

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

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

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

matteo answered 2019-02-22T02:44:21Z

1 votes

JSL 1.7

Oracle文档提到:

deprecation:未选中的警告由字符串“unchecked”标识。

deprecation:当使用注释@Deprecated注释声明的类型,方法,字段或构造函数(即通过名称覆盖,调用或引用)时,Java编译器必须生成弃用警告,除非:[...] 该用法位于注释为使用注释@SuppressWarnings(“deprecation”)抑制警告的实体内; 要么

然后它解释了实现可以添加和记录自己的:

编译器供应商应记录它们支持的警告名称以及此注释类型。 鼓励供应商合作以确保相同的名称在多个编译器中工作。

1 votes

我只想补充一点,有一个IntelliJ抑制参数的主列表:[https://gist.github.com/vegaasen/157fbc6dce8545b7f12c]

它看起来相当全面。部分:

Warning Description - Warning Name

"Magic character" MagicCharacter

"Magic number" MagicNumber

'Comparator.compare()' method does not use parameter ComparatorMethodParameterNotUsed

'Connection.prepare*()' call with non-constant string JDBCPrepareStatementWithNonConstantString

'Iterator.hasNext()' which calls 'next()' IteratorHasNextCallsIteratorNext

'Iterator.next()' which can't throw 'NoSuchElementException' IteratorNextCanNotThrowNoSuchElementException

'Statement.execute()' call with non-constant string JDBCExecuteWithNonConstantString

'String.equals("")' StringEqualsEmptyString

'StringBuffer' may be 'StringBuilder' (JDK 5.0 only) StringBufferMayBeStringBuilder

'StringBuffer.toString()' in concatenation StringBufferToStringInConcatenation

'assert' statement AssertStatement

'assertEquals()' between objects of inconvertible types AssertEqualsBetweenInconvertibleTypes

'await()' not in loop AwaitNotInLoop

'await()' without corresponding 'signal()' AwaitWithoutCorrespondingSignal

'break' statement BreakStatement

'break' statement with label BreakStatementWithLabel

'catch' generic class CatchGenericClass

'clone()' does not call 'super.clone()' CloneDoesntCallSuperClone

Matt Campbell answered 2019-02-22T02:45:57Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值