Java:@SuppressWarnings(...)参数的完整列表(在Netbeans中)?

时间:2010-12-11 22:12:16

标签: java netbeans compiler-warnings suppress-warnings

Netbeans提供了很多自定义“提示”,就像警告一样,只是大多数都无法被抑制(只是全局禁用IDE)。

但现在我查看使用

的代码
@SuppressWarnings("element-type-mismatch")

禁止名为“可疑方法调用”的提示/警告(例如remove(...),表示“错误”类型的集合。)

好吧,我永远不会想到使用SuppressWarnings - 名为“element-type-mismatch”的参数来抑制名为“可疑方法调用”的提示,但显然,它可以正常工作。

那么,这些参数是否有“神奇的列表”?

例如,如何禁止提示/警告“返回收集字段”?

注意:对于this similar question,未列出“元素类型不匹配”

3 个答案:

答案 0 :(得分:12)

在简要介绍一下NB-sourcecode之后,我在一些java.hint -classes中找到了这些:

@Hint(category="bitwise_operations", suppressWarnings="IncompatibleBitwiseMaskOperation")
@Hint(category="initialization", suppressWarnings="LeakingThisInConstructor")
@Hint(category="logging", suppressWarnings={"NonConstantLogger"}) //NOI18N
@Hint(category="logging", suppressWarnings={"ClassWithMultipleLoggers"}) //NOI18N
@Hint(category="logging", suppressWarnings={"ClassWithoutLogger"}, enabled=false) //NOI18N
@Hint(category="code_maturity", suppressWarnings="UseOfObsoleteCollectionType")
@Hint(category="initialization", suppressWarnings="OverridableMethodCallInConstructor")
@Hint(category="bitwise_operations", suppressWarnings="PointlessBitwiseExpression")
@Hint(category="code_maturity", suppressWarnings="CallToThreadDumpStack")
@Hint(category="bitwise_operations", suppressWarnings="ShiftOutOfRange")
@Hint(category="initialization", suppressWarnings="StaticNonFinalUsedInInitialization")
@Hint(category="code_maturity", enabled = false, suppressWarnings="UseOfSystemOutOrSystemErr")
@Hint(category="code_maturity", suppressWarnings="CallToPrintStackTrace")

显然,并非所有显示为警告的IDE提示都可以抑制... 不知道为什么,'因为它们中很多很容易扩展的AbstractHint类提供了这种能力...... 这些只是抑制名称,所以要找到它们所代表的警告名称的映射,需要在源代码中进行更深入的挖掘。

答案 1 :(得分:1)

documentation说:

  

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

由于NetBeans使用的是javac,我认为here is a list

See also this question

如果您正在使用其他编译器或某些编译器插件,请搜索其文档。

答案 2 :(得分:1)

这个名单很难找到。找到了Netbeans hint classes的来源。

所以'列表'是here(另请查看子包;例如jdkperf

可以使用camel cases这样的名称来强制所有类:

// org.netbeans.modules.java.hints.jdk.UnnecessaryBoxing.java
@SuppressWarnings("UnnecessaryBoxing")