在 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,//noinspection
是 javascript
@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 中为一行禁用警告的主要内容,如果未能解决你的问题,请参考以下文章