在 IntelliJ 中为一行禁用警告

Posted

技术标签:

【中文标题】在 IntelliJ 中为一行禁用警告【英文标题】:Disable warning in IntelliJ for one line 【发布时间】:2011-12-09 13:53:59 【问题描述】:

我有一个 Java 代码行,其中 IntelliJ 显示警告。如何使该特定行中的警告静音,而不影响其他行中显示的警告?

在这个问题中,实际警告是什么无关紧要:现在我不是在寻求有关如何提高特定 Java 代码质量的建议,但我一般想知道如何防止 IntelliJ 显示警告在特定的 Java 源代码行上。

【问题讨论】:

这确实不够详细,无法有人回答。什么警告?发生了什么? 有关警告的更多信息会有所帮助。警告的存在是有原因的,而且解决根本问题通常比忽略警告更好。 在这个问题中,具体的警告是无关紧要的。对于所有可能的警告,我一般想知道如何禁用 IntelliJ 针对特定行报告的警告(除了修复我的代码)。 例如:Intellij 抱怨password.replaceAll(".","*") 通常是一个错误。它认为你的意思是replaceAll("\.",...)。谢谢,但没有。所以现在我想确认并禁止警告。我不想让它闲逛。 【参考方案1】:

根据警告,您可以使用@SuppressWarnings。例如:

@SuppressWarnings("deprecation")
yourLineWhichIsDeprecated;

Take a look at this answer 有很长的警告列表,你可以禁止它。查看有关该主题的其他帖子以获取更多详细信息。

【讨论】:

感谢您提供背景信息,很高兴了解 SuppressWarning 的工作原理。但是,我一直在寻找 IntelliJ 特定的解决方案。 该链接只是将您带到一个随机的广告或网页 修复了链接。【参考方案2】:

大多数情况下,在 IntelliJ 中,您可以单击该行和 Alt+Enter,它会提供抑制警告等选项。

【讨论】:

就我而言,它没有这样的选项。它提供了一些选项来解决警告的根本原因,但我现在不想这样做。我只是想摆脱警告。 @kat,您需要按右箭头键打开检查子菜单,您可以在其中为当前行隐藏它,这将自动添加注释。 它现在可以正常工作,正如您(Ryan Stewart 和 CrazyCoder)所写:我按 F2 跳转到下一个警告,然后按 Alt-Enter 查看警告,然后按向右箭头键获取解决问题的选项,然后我选择适当的忽略...选项。仅供参考 只需将鼠标悬停在警告线上会显示一个工具提示,使用它是不可能摆脱警告的。 当前 IntelliJ 允许使用 "Analyze" : "Inspect Code" 打开一个下部窗格。在右侧窗格的右侧有一个方便的“Suppress for statement”。不过需要大屏幕和鼠标。 我在 Mac 上找不到任何建议或 cmets。【参考方案3】:

扩展 Ryan Stewart 的答案,在 IntelliJ 中使用 Alt+Enter,然后选择第一个子菜单,然后选择最后一项:Suppress for statement

更新

使用 IntelliJ IDEA 13,我注意到一个额外的菜单项:“Suppress for statement with comment”。这将使用 IntelliJ 样式 //noinspection unchecked。如果选择“Suppress for statement”,IntelliJ 将插入此文本:@SuppressWarnings("unchecked")

【讨论】:

谢谢。但是,这将添加 //noinspection deprecation 而不是 @SuppressWarnings("deprecation") @SuppressWarnings() 是 Java,//noinspectionjavascript @MartinVysny 如果你想要@SuppressWarnings("unchecked") 使用Suppress for method 而不是Suppress for statement 是否有 //noinspection 的所有有效标签的列表?【参考方案4】:

在 IntelliJ 15 中,内联“黄色灯泡”和 alt-enter 菜单不提供抑制对 1 行的检查。

通过菜单运行检查时有更多选项:Analyze -> Inspect Code...

然后在检查面板右侧提供各种选项。 右侧面板中的一些文本是可点击的。请注意,通常问题解决功能(快速修复)也是可用的。

(显然@tino 已经在评论中注意到了这一点,但我第一次错过了他的评论。我将其添加为完整答案,以使我个人错过的重要部分更容易找到。)

【讨论】:

至少一个不依赖于 alt-enter 菜单的答案,如上所述,在某些情况下不提供“禁用检查”或“抑制...”。跨度> Analyze -> Inspect Code... 美丽。它的界面就在那里+1【参考方案5】:

这里是使用 Kotlin 语言和 IntelliJ 编译代码时的提示

这里是 github 源代码的链接,其中编译器警告的来源以及 Kotlin 编译器输出的默认错误消息是在哪里定义的

kotlin/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java

如果编译器输出 "Variable ''0'' is never used" 它源自 DefaultErrorMessages.java 这一行格式

MAP.put(UNUSED_VARIABLE, "Variable ''0'' is never used", NAME);

要抑制警告,您可以在代码中未使用的变量之前添加 @Suppress() 注释,如下所示:

@Suppress("UNUSED_VARIABLE")
var y: Int = 3

因此,如果 IntelliJ 无法帮助您在突出显示的表达式上按 Alt+ENTER 弹出建议,那么技巧是查看 DefaultErrorMessages.java 内部是否可以找到错误消息和要抑制的关键字使用 @Suppress(..names) 的特定警告

该主题没有标记为“Kotlin”,但至少标记为 IntelliJ

【讨论】:

【参考方案6】:

//noinspection unchecked,ConstantConditions

@SuppressWarnings 并非在所有地方都有效

【讨论】:

【参考方案7】:
    点击下方有波浪线〰️的投诉区 出现一个灯泡?,点击灯泡? 选择抑制语句选项

4。将在当前行//noinspection CssInvalidPropertyValue上方添加无检查注释

    抱怨消失了?

【讨论】:

【参考方案8】:

正如其他问题所指出的,有多种选择可以实现您的要求。可以在官方文档here 中找到更全面的可用选项列表。

【讨论】:

【参考方案9】:

还有一个音符。如果您正在寻找禁止所有警告下一行(或部分代码)的答案。这可能是几种情况的原因:

创意不提供错误名称或建议

下一行的警告数量太大

你可以只使用:

    //noinspection ALL

【讨论】:

【参考方案10】:

问题面板

问题面板显示了我们代码中的警告和错误列表。在那里,我们可以仔细阅读我们的代码的各种问题,一个一个地处理列表。此功能到达in IntelliJ 2020.2。

至少在 IntelliJ 2021.2 中,或许更早的版本中,我们可以在该面板中隐藏警告。

选择问题点时,问题 em>面板的右侧窗格显示 suppress em>小部件。此弹出菜单显示用于抑制警告的各种方法的项目。

【讨论】:

以上是关于在 IntelliJ 中为一行禁用警告的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 IntelliJ 中为私有方法禁用“可选用作字段或参数类型”检查?

如何在 Atom 中为 jshint 禁用“使用严格”

对类的公共方法禁用“未使用”警告

禁用来自 cpplint 的特定警告

如何为几行代码禁用 GCC 警告

7.5 pragma 指令