如何猜测声明Groovy类的文件

时间:2015-09-07 10:00:29

标签: groovy

出于调试目的,我希望在运行时能够显示定义给定类的.groovy源文件。它可能是原生的吗?

请注意,groovy类可能不在stacktrace中,而是在参数中给出的类。结果将是具有签名的函数:

String getSourceInfo(Class<?> clazz) {...} //returns /home/user/work/..../SomeClass.groovy

作为扩展,我们还可以检索行号或在字段和方法上使用此函数:

String getSourceInfo(Field field) {...} //returns /..../SomeClass.groovy#13:5

如果没有,我正在考虑在ClassNode上添加一个Groovy AST添加注释。它应该不会太困难,因为我们拥有所有必需的信息(例如SEMANTIC_ANALYSIS),但可能有一些标准的方法。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我记得在Java中获取一些运行时信息的技术,如果Groovy脚本仍处于活动状态是可以的,但是什么时候已经死了(分析死后)不合适:

            e= new Exception();
            StackTraceElement[] st = e.getStackTrace();
            for(StackTraceElement s:st)
            {
                s.getLineNumber()
            }

//没有投掷,只获取信息