分析.class文件

时间:2015-04-23 11:33:40

标签: java class methods java-bytecode-asm

我想知道是否有办法在.class文件中获取对某个方法的调用次数。

我搜索过,我找到了ASM和sonarqube等工具,但我找不到获取所需信息的方法。

谢谢

2 个答案:

答案 0 :(得分:0)

字节代码注入

- >>>在您要监控的类中注入计数代码。

对于字节代码注入,您可以使用ASM或JavaAssit。

http://java.dzone.com/articles/implementing-build-time

答案 1 :(得分:0)

You Problem Definition Right

解决方案: 尝试下面的代码,您将获得遍历字节代码的提示。如果仔细观察,可以看到代码中使用方法的次数。为此你甚至可以使用正则表达式。

package com.cosmic.evaluate.asm;
import java.io.FileInputStream;
import java.io.PrintWriter;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.util.ASMifier;
import org.objectweb.asm.util.TraceClassVisitor;

public class TetsMain {

public static void main(String[] args) throws Exception {

String classPath =       "./target/classes/com/cosmic/evaluate/asm/TestClass.class";

    int flags = ClassReader.SKIP_DEBUG;


    ClassReader cr;

    if (classPath.endsWith(".class") || classPath.indexOf('\\') > -1 || classPath.indexOf('/') > -1) {
        cr = new ClassReader(new FileInputStream(classPath));
    } else {
        cr = new ClassReader(classPath);
    }

    cr.accept(new TraceClassVisitor(null, new ASMifier(), new PrintWriter(System.out)), flags);

}

}

使用Maven依赖            org.ow2.asm       一个小的       5.0.3     

<强>链接 Tutorial for Regular Expression