使IntelliJ突出显示Groovy / Grails语法错误

时间:2013-12-10 09:09:19

标签: grails groovy intellij-idea

我正在使用IntelliJ IDEA 13来编辑我的Grails应用程序,虽然它对某些事情非常聪明,但它不能很好地显示语法错误。

,例如,我可以拼错一个属性或方法名称,但IntelliJ在代码中显示一个几乎没有引人注目的黑色下划线,其中悬停弹出窗口显示Cannot resolve symbol 'foobar'

如果我进入View -> Tool Windows -> Messages,它甚至不会显示此问题,即使在Build -> Rebuild project之后(尽管它在第三方插件代码中显示了一些无用的弃用消息)。

如何找到显示所有这些潜在问题的视图,以便我可以查看它们?

编辑 - @lukelazarovic是完全正确的,我修正了一个关于Groovy / Grails如何工作的重大误解。问题还包括:

Will groovy (grails) give you compile time checking like java?

2 个答案:

答案 0 :(得分:17)

这是我到目前为止所得到的:

理念检查应该是一种方法。您可以通过右键单击项目来设置它们 - >分析 - >检查代码......并且有检查配置文件选择,打开检查窗口。

在那里,您可以选择要在代码库上运行的检查以及每次检查的严重程度。

转到Groovy - >可能的错误 - >访问未解析的表达式检查并将严重性设置为Error。

现在你应该看到拼写错误的属性或方法名称,但不是黑色下划线,而是红色,表示错误。

但令我生气的是,如果你在整个项目上运行Analyze,我不能强迫Idea在结果中显示这些错误。它显示了所有其他检查错误,但没有显示此错误。

答案 1 :(得分:4)

首先是一些背景资料...... IDEA仅在项目工具窗口和“问题”视图中显示编译错误。您可以open a feature request要求在这些视图中也显示非编译错误。

通过“检查”发现并显示非编译问题。通过“意图”(a.k.a。“快速修复”)修复了失败的检查。 IDEA使用检验配置文件,您可以在其中设置哪些检验处于活动状态以及显示检验失败的严重性级别。如果需要,您可以定义多个配置文件其中一个配置文件被设置为在编辑器中使用的配置文件(F * ile>设置> [项目设置]>检查*)。然后,您可以(如您所知)通过Analyze>运行检查配置文件(在编辑器中使用的相同配置文件或不同的配置文件)。检查代码。您还可以通过 Analyze>运行单个检查。按名称运行检查

  

IntelliJ在代码

中显示一个几乎没有明显的黑色下划线

如果你认为这个问题不够突出,你有三个选择(其中一些是你已经部分发现的):

  1. 更改报告问题的检查的严重性级别,包括创建新的自定义级别。不同的严重性级别使用不同的突出显示样式来显示
  2. 修改IDEA如何显示严重性级别的格式(即颜色和样式)
  3. 1&的组合2
  4. 步骤:

    1. 将光标放在突出显示的问题上。
    2. 键入 Alt + 输入 )至“显示意向行动”
    3. 在弹出窗口中,将是报告问题的检查名称或一个或多个修复问题的意图。选择一个,然后通过右箭头
    4. 打开侧面菜单
    5. 选择“编辑检查配置文件设置”
    6. 这将打开检查设置对话框,并选择相关检查
      • 您也可以通过文件>进入此对话框;设置>检查
    7. 更改检查的严重性级别,和/或单击省略号...按钮以创建自定义设置或修改严重性级别的颜色和样式
      • 严重性级别的颜色和样式设置也可以通过文件>打开。设置> [IDE设置]>编辑>颜色和字体>常规,然后在列表中选择严重性(例如“错误”或“信息”)
      • 修改严重性级别的颜色&样式会影响设置为该严重性级别的所有检查。
    8.   

      在那里,您可以选择要在代码库上运行的检查以及每次检查的严重程度。

      为了澄清,严重性将决定检查在编辑器中的显示方式,然后将配置文件用于编辑器的检查配置文件。进行代码分析时,严重性的主要目的是在输出工具窗口中对检查进行分组和过滤。通常,最简单的方法是在您希望手动运行代码检查时使用预定义的配置文件。当然,您可以使用已定义的相同配置文件在编辑器中使用。

        

      但令我生气的是,如果你在整个项目上运行Analyze,我不能强迫Idea在结果中显示这些错误。它显示了所有其他检查错误,但没有显示此错误。

      应显示已执行配置文件中定义的所有检查(即活动)。 Groovy“访问未解析的表达式”检查是一个明显的错误。我推荐opening a bug report