java - Java 中的 Groovy 语法检查

标签 java groovy

我正在实现一个基于 Web 的 Groovy 代码编辑器,需要检查代码是否有语法错误。下面的 Java 实现工作正常,但生成的消息包含一些不需要的元素(以粗体显示)。我正在寻找一种单独列出警告和错误的方法。 我正在使用这个 Maven 依赖项:groovy-all 2.1.1

try {
    new GroovyShell().parse(groovyCode);            
} catch(CompilationFailedException cfe) {
    System.out.println(cfe.getMessage());
}

输出:

startup failed:

Script1.groovy: 1: unexpected token: n @ line 1, column 19.

def factorial(n)  n == 1 ? 1 : n * factorial(n - 1) }
                         ^

1 error

最佳答案

解析错误消息没有多大意义。尝试调查一下

CompilationFailedException.getUnit()
ProcessingUnit.getErrorCollector()
ErrorCollector.getWarnings() & getErrors() 

编辑

好的,看起来 CompilationFailedException 上的 unit 为 null。 try catch MultipleCompilationErrorsException 来代替:

try {
    new GroovyShell().parse(groovyCode);
} catch(MultipleCompilationErrorsException cfe) {
    ErrorCollector errorCollector = cfe.getErrorCollector();
    System.out.println("Errors: "+errorCollector.getErrorCount());
}

顺便说一句,看看 ErrorCollector 源代码,您可能会发现 write 方法对于输出有关编译错误的信息很有用。

关于java - Java 中的 Groovy 语法检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15263206/

相关文章:

java - 如何限制guest用户登录后访问JMenuItem?

java - 在 Windows 上启动 sqoop 客户端时出错

java - ArrayList<TextView> 无法设置

gradle - gradle bootRun 执行失败

jenkins - Sonar Qube WaitForQualityGate 步骤的 groovy.lang.ReadOnlyPropertyException

groovy - 特殊的 Groovy 魔术重新属性访问和集合/可迭代对象?

java - 将图像 URI 转换为文件对象

java - GET 请求 Tomcat 管理器

grails - 为什么 .collect() 在以下 GString 中不起作用?

java - 你能混合使用 JVM 语言吗?即 : Groovy & Clojure