13

Netbeans 提供了很多自定义的“提示”,就像警告一样,只是它们中的大多数不能被抑制(只是全局禁用 IDE)。

但现在我查看使用的代码

@SuppressWarnings("element-type-mismatch")

抑制称为“可疑方法调用”的提示/警告(例如remove(...)对于具有“错误”类型的集合)。

好吧,我永远不会想到使用SuppressWarnings名为“元素类型不匹配”的参数来抑制名为“可疑方法调用”的提示,但显然,它有效。

那么,是否存在此类参数的“魔法清单”?

例如,如何抑制提示/警告“返回集合字段”?

注意:对于这个类似的问题,没有列出“元素类型不匹配”

4

3 回答 3

13

在简要查看 NB 源代码后,我在一些 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 类提供了这种能力……尽管这些只是抑制名称,因此要找到它们所代表的警告名称的映射,需要更深入地挖掘源代码。

于 2011-04-19T14:38:41.187 回答
1

文档说:

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

由于 NetBeans 使用 javac 我认为,这里是一个列表

另请参阅此问题

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

于 2010-12-11T22:18:46.343 回答
1

好吧,这个列表很难找到。确实找到了hint classesNetbeans的来源。

所以“清单”就在这里(另请查看子包;例如jdkperf

所有类都可以通过使用其camel cases名称来抑制,例如:

// org.netbeans.modules.java.hints.jdk.UnnecessaryBoxing.java
@SuppressWarnings("UnnecessaryBoxing") 
于 2015-11-24T10:01:35.760 回答