【问题标题】:What's the difference between QuickFix and IntentionAction?Quick Fix 和 Intention Action 有什么区别?
【发布时间】:2022-11-29 05:16:54
【问题描述】:

当谈到实现“快速修复”时,您可以使用两个单独的类层次结构,QuickFix(和LocalQuickFix)和IntentionAction。似乎也有实现两者的方法(如LocalQuickFixAndIntentionActionOnPsiElement)。

我想知道这两个基类之间的区别。我什么时候会使用一个而不是另一个?这些层次结构中的一个是否已过时并被另一个所取代?

【问题讨论】:

    标签: intellij-plugin


    【解决方案1】:

    QuickFix通常属于Inspection,应该作为对检查发出的警告的自动修复来实现。 例如,尝试在 Java 中使用 list.size() == 0。 IntelliJ 会建议将其替换为list.isEmpty()。 注意突出显示(在 IntelliJ 中)。 您可以触发的操作Alt+进入称为快速修复,它将为您执行此替换。

    意图在某种意义上是相似的,它是特定于一段代码的动作,可以被触发Alt+进入.主要区别在于,如果您不使用意图,IntelliJ 不会抱怨;没有突出显示这里有问题或可能有问题,因为可能没有。 意图旨在让用户的生活更轻松,但它们不会像检查那样直接出现在你的脸上。 举个例子,这可以在 LaTeX 中使用,用它们的 left ight 等价物替换任何大括号对;这不是触发检查的原因,因为通常首选简单的大括号对,但能够使用简单的快捷方式进行此替换真是太好了。

    您也会经常遇到意图循环,甚至作为快速修复的相反方向的意图,但您不会在快速修复中看到循环(除非您已明确启用检查的两个方向)。


    总结一下:在对检查实施自动修复时使用快速修复,否则使用意图操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 2012-02-08
      • 2021-03-07
      • 1970-01-01
      • 2019-06-20
      • 2015-02-24
      • 1970-01-01
      相关资源
      最近更新 更多