IntelliJ IDEA @SuppressWarnings 用于检查工具名称

IntelliJ IDEA @SuppressWarnings for inspection with name of tool

我知道我可以像这样抑制来自 IntelliJ IDEA 检查的警告:

@SuppressWarnings("CollectionDeclaredAsConcreteClass")
public PropertiesExpander(Properties properties) {
    this.properties.putAll(properties);
}

外行人可能不清楚哪个工具需要这种抑制。

PMD 为此使用前缀:

@SuppressWarnings("PMD.UnusedLocalVariable")

FindBugs 使用专用注释:

@SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")

有什么办法可以清楚地表明这种抑制只是针对IntelliJ IDEA的?

为方法参数抑制这种情况的一种方法是改用 javadoc 标记:

/**
 * @noinspection CollectionDeclaredAsConcreteClass
 */
public PropertiesExpander(Properties properties) {
    this.properties.putAll(properties);
}

这个 javadoc 标签是非常特定于 IntelliJ 的,所以其他工具应该不会遇到任何问题。您可以通过按原样识别它或添加一些评论来轻松识别它:

/**
 * @noinspection IntelliJ CollectionDeclaredAsConcreteClass
 */
public PropertiesExpander(Properties properties) {
    this.properties.putAll(properties);
}

当然你还可以缩短它:

/** @noinspection CollectionDeclaredAsConcreteClass */
public PropertiesExpander(Properties properties) {
    this.properties.putAll(properties);
}

一般做法

可以使用特殊注释而不是 @SuppressWarnings 注释逐一取消某些警告。

这是一个包含大量警告的示例:

如果您在 notUsedLocalVariable 上按 Alt+Enter,然后您可以在上下文菜单中选择 Suppress for statement with comment (选择Remove variable ...后右转)

在某些 variables/fields/methods 上,选择的抑制只是 Suppress for statement

如果您查看右侧字段,现在大部分(不是全部)警告都已被抑制:

如您所见,可以在同一个注释行中进行多次隐藏。

这似乎有点乏味,但我认为这是你能做的最好的了。

我找到了使用 @SuppressWarnings 实现该目标的方法:

@SuppressWarnings("idea: CollectionDeclaredAsConcreteClass")
public PropertiesExpander(Properties properties) {
    this.properties.putAll(properties);
}

注意idea:后面必须有space,否则无效