方法的调用树:覆盖工具在Java中如何工作?有API吗?
我正在寻找一种在java运行时列出其他方法调用的所有方法(调用树)的方法 我正在寻找一个api或输出,可以让我使用脚本的数据 有什么想法吗方法的调用树:覆盖工具在Java中如何工作?有API吗?,java,code-coverage,Java,Code Coverage,我正在寻找一种在java运行时列出其他方法调用的所有方法(调用树)的方法 我正在寻找一个api或输出,可以让我使用脚本的数据 有什么想法吗 Thx嗯……首先,这是一个好问题……我高度怀疑市场上是否有这样的实用程序……然而,有一些方法可以解决这个问题…比如在您最喜欢的IDE(如Eclipse和Netbeans)中使用调试器工具…覆盖和分析工具主要采用两种技术:定期轮询JVM以了解各种线程的状态,或者检测应用程序字节码以从JVM中推出相关数据 java语言本身没有直接的API支持,但是您可以利用许多
Thx嗯……首先,这是一个好问题……我高度怀疑市场上是否有这样的实用程序……然而,有一些方法可以解决这个问题…比如在您最喜欢的IDE(如Eclipse和Netbeans)中使用调试器工具…覆盖和分析工具主要采用两种技术:定期轮询JVM以了解各种线程的状态,或者检测应用程序字节码以从JVM中推出相关数据 java语言本身没有直接的API支持,但是您可以利用许多工具:
public aspect TraceCalls {
pointcut aCall : call(* *(..));
pointcut inside : cflow(execution(public MyClass.MyMethod(..)));
before() : aCall() && inside() {
System.out.println(thisJoinPoint);
}
}
显然,您可以访问更多的数据,将它们打印到文件中,格式化等等
(请注意,我在这里编写了这段代码,因此可能会有很多语法错误)正确的方法是使用静态分析器,查看您的代码 并确定可能的呼叫者集。这会告诉你什么 可以在任何(保守的)情况下调用方法。 我们的its可以配置为执行此操作。它支持计算点进行分析;方法调用本质上是通过类方法向量进行的调用 作为穷人的替代品,您可以使用捕获调用树的分析工具。 这将只让您通过特定的程序运行执行调用,而不是所有可能的调用上下文 我们将生成一个调用树