【发布时间】:2012-09-04 04:43:42
【问题描述】:
public class LineNum1 extends Thread{
public synchronized void run()
{
try {
Hello.main(null);
System.out.println("Stack Trace of thread"+ this.currentThread().getName());
System.out.println(this.currentThread().getStackTrace()[1].getLineNumber());
System.out.println("End of Stack Trace");
} catch (Exception e1) {
e1.printStackTrace();
}
}
public static void main(String[] args) {
LineNum1 t = new LineNum1();
t.start();
}
}
我正在开发一个代码覆盖工具。
使用上面的程序,我从这里执行 Hello.java。有什么方法可以让我控制 Hello.java 吗?
或者为了让我的生活更简单,我可以获取 Hello.java 的执行行(执行路径)的行号吗?
【问题讨论】:
-
请对代码块使用一致且符合逻辑的缩进。
-
@你真的在写代码覆盖工具吗?请参阅 jacoco/emma/cobertura 等。所有这些仪器代码都有特定的指令,然后在运行时收集数据。你能解释一下你的方法吗?
-
嗨 Jayan,我的方法是使用
this.currentThread().getStackTrace()[1].getLineNumber()获取行号。我本可以检测我的代码,但我正在为其编写代码覆盖工具的应用程序(无法显示)需要执行的每一行。因此,我认为在每一行进行检测都会使执行速度变慢。所以请提出一种方法。谢谢。 -
@Daanish:但只要
Hello不友好地抛出异常,你就无法捕获异常。即使抛出异常:我看不到任何合理的方法可以从中获得类似覆盖。
标签: java code-coverage line-numbers