2013-03-07 2 views
0

J'implémente un éditeur de code Groovy basé sur le Web et j'ai besoin de vérifier le code pour les erreurs de syntaxe. L'implémentation Java ci-dessous fonctionne bien mais le message qui en résulte contient des éléments indésirables (en gras). Je cherche un moyen de lister les avertissements et les erreurs individuellement. J'utilise cette dépendance Maven: groovy-all 2.1.1Vérification de syntaxe Groovy en Java

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

Sortie:

startup failed: 

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

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

1 error 

Répondre

2

aurait pas beaucoup de sens pour analyser le message d'erreur. Essayez de regarder dans

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

EDIT

Ok, on dirait unit est nulle sur le CompilationFailedException. Essayez attraper MultipleCompilationErrorsException à la place:

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

BTW, jetez un oeil sur les ErrorCollector sources, vous trouverez peut-être la méthode write utile pour produire les informations sur les erreurs de compilation.

+0

J'avais essayé le chemin cfe.getUnit(), mais il renvoyait toujours null. – izilotti

+0

@ialencar s'il vous plaît jeter un oeil à la réponse mise à jour –

+0

MultipleCompilationErrorsException fonctionne. Merci! – izilotti