2017-03-28 67 views
0

ASM字节码操作框架的visitLine()方法访问编译它的源代码的每一行。ASM ByteCode - 覆盖visitLine()方法

如果我有一个线像

Line 45: ArrayList<Integer> test = new ArrayList< 
Line 46:         Integer>(); 

的源代码分解然后同时显示45和46有没有一种方法来覆盖它,以便它显示了这个执行刚刚45行?

+1

在字节码中它将只是一行 – esin88

+1

@ esin88好吧。我已经重写了visitLine方法来打印所有访问过的行。它显示45和46都是预期的吗? – maddie

+1

如果在源代码中有两行代码需要编译到操作码的代码换行符,这将保留在字节代码中。这是由于字节码将表中的行存储在表格属性中,该表格属性将操作码范围与行号相关联。尽管ASM简化了整个过程。 –

回答

1

ASM添加了由Jaca编译器添加的所有行信息。如果你想删除一行,你需要自己过滤这些行。例如,您可以检查一行是否不包含指令,您可以禁止对任何底层方法访问者的调用。

+0

好的。感谢您的建议。我会尝试。 – maddie