Skip to content

Commit fa79212

Browse files
committed
Example from the ASM documentation
1 parent f98cdc1 commit fa79212

2 files changed

Lines changed: 69 additions & 5 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package gr.gousiosg.callgraph;
2+
3+
import org.objectweb.asm.AnnotationVisitor;
4+
import org.objectweb.asm.Attribute;
5+
import org.objectweb.asm.ClassVisitor;
6+
import org.objectweb.asm.FieldVisitor;
7+
import org.objectweb.asm.MethodVisitor;
8+
9+
public class ClassPrinter implements ClassVisitor {
10+
public void visit(int version, int access, String name, String signature,
11+
String superName, String[] interfaces) {
12+
System.out.println(name + " extends " + superName + " {");
13+
}
14+
15+
public void visitSource(String source, String debug) {
16+
}
17+
18+
public void visitOuterClass(String owner, String name, String desc) {
19+
}
20+
21+
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
22+
return null;
23+
}
24+
25+
public void visitAttribute(Attribute attr) {
26+
}
27+
28+
public void visitInnerClass(String name, String outerName,
29+
String innerName, int access) {
30+
}
31+
32+
public FieldVisitor visitField(int access, String name, String desc,
33+
String signature, Object value) {
34+
System.out.println(" " + desc + " " + name);
35+
return null;
36+
}
37+
38+
public MethodVisitor visitMethod(int access, String name, String desc,
39+
String signature, String[] exceptions) {
40+
System.out.println(" " + name + desc);
41+
return null;
42+
}
43+
44+
public void visitEnd() {
45+
System.out.println("}");
46+
}
47+
}
Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,26 @@
1+
12
package gr.gousiosg.callgraph;
23

3-
public class JCallGraph
4-
{
5-
public static void main( String[] args )
6-
{
7-
System.out.println( "Hello World!" );
4+
import java.io.IOException;
5+
6+
import org.objectweb.asm.ClassReader;
7+
8+
/**
9+
* Constructs a callgraph out of a JAR archive. Can combine multiple archives
10+
* into a single call graph.
11+
*
12+
* @author Georgios Gousios <gousiosg@gmail.com>
13+
*
14+
*/
15+
public class JCallGraph {
16+
17+
public static void main(String[] args) {
18+
try {
19+
ClassPrinter cp = new ClassPrinter();
20+
ClassReader cr = new ClassReader("java.lang.Thread");
21+
cr.accept(cp, 0);
22+
} catch (IOException e) {
23+
24+
}
825
}
926
}

0 commit comments

Comments
 (0)