diff options
Diffstat (limited to 'src/test/test/javassist/bytecode/analysis/ErrorFinder.java')
-rw-r--r-- | src/test/test/javassist/bytecode/analysis/ErrorFinder.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/test/test/javassist/bytecode/analysis/ErrorFinder.java b/src/test/test/javassist/bytecode/analysis/ErrorFinder.java new file mode 100644 index 0000000..e131ffb --- /dev/null +++ b/src/test/test/javassist/bytecode/analysis/ErrorFinder.java @@ -0,0 +1,63 @@ +package test.javassist.bytecode.analysis; + +import java.io.BufferedReader; +import java.io.FileReader; + +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtMethod; +import javassist.bytecode.analysis.Analyzer; + +/** + * Simple testing tool that verifies class files can be analyzed. + * + * @author Jason T. Greene + */ +public class ErrorFinder { + + public static void main(String[] args) throws Exception { + ClassPool pool = ClassPool.getDefault(); + + String className = args[0]; + if (!className.equals("-file")) { + analyzeClass(pool, className); + return; + } + + FileReader reader = new FileReader(args[1]); + BufferedReader lineReader = new BufferedReader(reader); + + + String line = lineReader.readLine(); + while (line != null) { + analyzeClass(pool, line); + line = lineReader.readLine(); + } + } + + private static void analyzeClass(ClassPool pool, String className) { + try { + + CtClass clazz = pool.get(className); + CtMethod[] methods = clazz.getDeclaredMethods(); + for (int i = 0; i < methods.length; i++) + analyzeMethod(clazz, methods[i]); + } catch (Throwable e) { + System.out.println("FAIL: CLASS: " + className + " " + e.getClass() + ":" + e.getMessage()); + } + } + + private static void analyzeMethod(CtClass clazz, CtMethod method) { + String methodName = clazz.getName() + "." + method.getName() + method.getSignature(); + System.out.println("START: " + methodName); + Analyzer analyzer = new Analyzer(); + + long time = System.currentTimeMillis(); + try { + analyzer.analyze(clazz, method.getMethodInfo2()); + System.out.println("SUCCESS: " + methodName + " - " + (System.currentTimeMillis() - time)); + } catch (Exception e) { + System.out.println("FAIL: " + methodName + " - " + (e.getMessage() == null ? e.getClass().getName() : e.getMessage())); + } + } +} |