我想知道是否有办法在.class文件中获取对某个方法的调用次数。
我搜索过,我找到了ASM和sonarqube等工具,但我找不到获取所需信息的方法。
谢谢
答案 0 :(得分:0)
字节代码注入
- >>>在您要监控的类中注入计数代码。
对于字节代码注入,您可以使用ASM或JavaAssit。
答案 1 :(得分:0)
解决方案: 尝试下面的代码,您将获得遍历字节代码的提示。如果仔细观察,可以看到代码中使用方法的次数。为此你甚至可以使用正则表达式。
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