2010-02-25 11 views
6

Estoy usando Groovy en una aplicación Java Swing como parte de mi plan para forzarme a mí misma los lenguajes dinámicos hasta que me gusten (lo que está sucediendo, en parte).Limpiar rastros de pila en Groovy usando Eclipse?

Mis seguimientos de pila están llenos de cosas chéveres como

org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor 

hay una manera de conseguir Eclipse para eliminar todo eso codehaus cosas (seguimientos de pila de filtros, básicamente)?

Editar: que puedo hacer esto desde la línea de comandos con grep (bueno, not yet) así que no es tan malo, pero dentro de Eclipse sería genial también.

+0

Si tu pila de huellas se está volcando a través de un registrador (como java.util.Logger) puedes formatearlas como quieras. Sin embargo, eliminar cosas de los rastreos de la pila programaticamente parece ser una de esas cosas que pueden volver loca a una persona que mantiene su código. Si está depurando, me quedaría con grep; luego, en la producción, su código generará trazas de pila correctas todo el tiempo. – Quotidian

+0

@Quotidian, su observación es parcialmente correcta. Se trata de rastros de pila de "tiempo de desarrollo" que detendrán el inicio de la aplicación. Por otro lado, creo que CUALQUIER PERSONA que se desarrolle en Groovy querría eliminar esas cosas, a menos que estuvieran trabajando en el código de Codehaus. Solo para decir "hola mundo" hay una tonelada de código codehaus invocado. No tiene sentido, desde la perspectiva del usuario/programador. –

Respuesta

9

Hay una utilidad en Groovy que hace exactamente lo que desea: StackTraceUtils. STU limpiará toda la información de su callsite StackTrace, dejando la materia que usted está realmente interesado en

Editar:. En Java que tendrá que encasulate la excepción en un java.lang.RuntimeException de acuerdo a los comentarios.

Ejemplo de uso:

try { 
    1/0; 
} catch (Throwable t) { 
    throw new RuntimeException(org.codehaus.groovy.runtime.StackTraceUtils.sanitize(t)); //Modifies the Throwable and rethrows 
} 

StackTraceUtils está disponible en la última versión del maravilloso y originalmente proviene de Grails. No estoy seguro de cómo aplicar esto a todas las trazas acumuladas de tus proyectos, pero creo que Griffon y Grails lo hacen, por lo que debería haber algunos consejos en esos proyectos.

+0

¡Buenas cosas, MUCHAS GRACIAS! –

+0

Voy a marcar esto como la mejor respuesta por ahora, pero si viene alguien que pueda decirme cómo hacer que Eclipse haga esto ... Pero para mí, esto funcionó. –

+0

De nada. Debería poder hacer que esto suceda automáticamente para todas las stacktraces no detectadas que usan java.lang.Thread.UncaughtExceptionHandler que le permite registrar un manejador de excepciones para las excepciones no detectadas, pero no he podido hacer que esto funcione. Lea más sobre esto aquí: http://dabblescribble.blogspot.com/2009/11/starting-out-in-griffon-3-logging.html – xlson

2

No tengo una respuesta para "Ejecutar como aplicación Groovy", pero si ejecuta GroovyTestcases como pruebas jUnit en Eclipse, hay un botón "seguimientos de pila de filtro" encima de la vista de seguimiento de la pila.

+1

+1 ¡nos estamos acercando! –

Cuestiones relacionadas