El usuario compilador ingresó un script maravilloso en tiempo de ejecución

Tenga un escenario como el siguiente donde necesito validar el script maravilloso para la corrección.

class CostCalculator{

String name
String groovyScript

static constraints = {
groovyScript:static validateScript = {String script ,def obj->
        boolean status = true
        try {
            def shell = new GroovyShell()
            def data = shell.parse(script)
            data.run()
        }catch (Throwable e){
            e.printStackTrace()
            status = false
        }
        if(!status){
            return "domain.script.compilation.errors"
        }else{
            return true
        }
    }
}

}

El problema en el código anterior es que ejecuta el código y, si hay alguna excepción, lo lanza en tiempo de ejecución.

Hay pocas cosas a considerar:

el código maravilloso debe compilarse en lugar de ejecutarse (ya que el código puede contener actualizaciones de nivel db) y generar una excepción.el código maravilloso debería compilarse estáticamente, es decir, por ejemplo, si falta alguna propiedad en el script, entonces debe ser notificado.

a continuación podría ser script de ejemplo:

void addCost(int x, int y,String itemName){
double cost = x*y + originalCost
Item item = SoldItem.findByItemName(itemName)
item.price += cost
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta