2

我正在实现一个基于 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
4

1 回答 1

3

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

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

编辑

好的,看起来unitCompilationFailedException. 尝试捕捉MultipleCompilationErrorsException

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

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

于 2013-03-07T10:12:06.393 回答