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