1 /** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package net.sourceforge.pmd.dcd; 5 6 import net.sourceforge.pmd.dcd.graph.ClassNode; 7 import net.sourceforge.pmd.dcd.graph.ConstructorNode; 8 import net.sourceforge.pmd.dcd.graph.FieldNode; 9 import net.sourceforge.pmd.dcd.graph.MemberNode; 10 import net.sourceforge.pmd.dcd.graph.MethodNode; 11 import net.sourceforge.pmd.dcd.graph.NodeVisitorAdapter; 12 import net.sourceforge.pmd.dcd.graph.UsageGraph; 13 14 /** 15 * Dump a UsageGraph to System.out. 16 */ 17 public class DumpNodeVisitor extends NodeVisitorAdapter { 18 19 @Override 20 public Object visit(UsageGraph usageGraph, Object data) { 21 System.out.println("----------------------------------------"); 22 super.visit(usageGraph, data); 23 System.out.println("----------------------------------------"); 24 return data; 25 } 26 27 @Override 28 public Object visit(ClassNode classNode, Object data) { 29 System.out.println("Class: " + ClassLoaderUtil.fromInternalForm(classNode.getName())); 30 return super.visit(classNode, data); 31 } 32 33 @Override 34 public Object visitFields(ClassNode classNode, Object data) { 35 System.out.println("\tFields (" + classNode.getFieldNodes().size() + "):"); 36 return super.visitFields(classNode, data); 37 } 38 39 @Override 40 public Object visit(FieldNode fieldNode, Object data) { 41 printMember(fieldNode); 42 return super.visit(fieldNode, data); 43 } 44 45 @Override 46 public Object visitConstructors(ClassNode classNode, Object data) { 47 System.out.println("\tConstructors (" + classNode.getConstructorNodes().size() + "):"); 48 return super.visitConstructors(classNode, data); 49 } 50 51 @Override 52 public Object visit(ConstructorNode constructorNode, Object data) { 53 printMember(constructorNode); 54 return super.visit(constructorNode, data); 55 } 56 57 @Override 58 public Object visitMethods(ClassNode classNode, Object data) { 59 System.out.println("\tMethods (" + classNode.getMethodNodes().size() + "):"); 60 return super.visitMethods(classNode, data); 61 } 62 63 @Override 64 public Object visit(MethodNode methodNode, Object data) { 65 printMember(methodNode); 66 return super.visit(methodNode, data); 67 } 68 69 @Override 70 public Object visitUses(MemberNode memberNode, Object data) { 71 if (Boolean.TRUE == data && !memberNode.getUses().isEmpty()) { 72 System.out.println("\t\t\tUses:"); 73 } 74 return super.visitUses(memberNode, data); 75 } 76 77 @Override 78 public Object visitUse(MemberNode use, Object data) { 79 if (Boolean.TRUE == data) { 80 System.out.println("\t\t\t\t" + use.toStringLong()); 81 } 82 return super.visitUse(use, data); 83 } 84 85 @Override 86 public Object visitUsers(MemberNode memberNode, Object data) { 87 if (Boolean.TRUE == data && !memberNode.getUsers().isEmpty()) { 88 System.out.println("\t\t\tUsers:"); 89 } 90 return super.visitUsers(memberNode, data); 91 } 92 93 @Override 94 public Object visitUser(MemberNode user, Object data) { 95 if (Boolean.TRUE == data) { 96 System.out.println("\t\t\t\t" + user.toStringLong()); 97 } 98 return super.visitUser(user, data); 99 } 100 101 protected void printMember(MemberNode memberNode) { 102 System.out.println("\t\t(" + memberNode.getUses().size() + ", " + memberNode.getUsers().size() + ") " 103 + memberNode.toStringLong()); 104 } 105 }