簡體   English   中英

Java中的Groovy語法檢查

[英]Groovy Syntax Checking in Java

我正在實現基於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。 嘗試改為捕獲MultipleCompilationErrorsException

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

順便說一句,看看ErrorCollector源代碼,您可能會發現write方法對於輸出有關編譯錯誤的信息很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM