Coverage Report - org.codenarc.source.ExpressionCollector
 
Classes in this File Line Coverage Branch Coverage Complexity
ExpressionCollector
100%
10/10
83%
5/6
0
ExpressionCollector$1
N/A
N/A
0
ExpressionCollector$ExpressionCollectorVisitor
86%
6/7
100%
2/2
0
 
 1  
 package org.codenarc.source;
 2  
 
 3  
 
 4  
 import org.codehaus.groovy.ast.ClassCodeVisitorSupport;
 5  
 import org.codehaus.groovy.ast.ClassNode;
 6  
 import org.codehaus.groovy.ast.ModuleNode;
 7  
 import org.codehaus.groovy.ast.expr.MethodCallExpression;
 8  
 import org.codehaus.groovy.control.SourceUnit;
 9  
 
 10  
 import java.util.ArrayList;
 11  
 import java.util.HashMap;
 12  
 import java.util.List;
 13  
 import java.util.Map;
 14  
 
 15  4220
 class ExpressionCollector {
 16  
 
 17  
     Map<ClassNode, List<MethodCallExpression>> getMethodCalls(ModuleNode module) {
 18  
 
 19  4220
         Map<ClassNode, List<MethodCallExpression>> result = new HashMap<ClassNode, List<MethodCallExpression>>();
 20  
 
 21  4220
         if (module != null && module.getClasses() != null) {
 22  3919
             for (ClassNode classNode : module.getClasses()) {
 23  4584
                 ExpressionCollectorVisitor collector = new ExpressionCollectorVisitor();
 24  4584
                 collector.visitClass(classNode);
 25  4584
                 result.put(classNode, collector.methodCalls);
 26  4584
             }
 27  
         }
 28  4220
         return result; 
 29  
     }
 30  
 
 31  13752
     private static class ExpressionCollectorVisitor extends ClassCodeVisitorSupport {
 32  
         
 33  4584
         private final List<MethodCallExpression> methodCalls = new ArrayList<MethodCallExpression>();
 34  
 
 35  
         @Override
 36  
         public void visitMethodCallExpression(MethodCallExpression call) {
 37  15253
             if (!methodCalls.contains(call)) {
 38  14998
                 methodCalls.add(call);
 39  
             }
 40  15253
             super.visitMethodCallExpression(call);
 41  15253
         }
 42  
 
 43  
         @Override
 44  
         protected SourceUnit getSourceUnit() {
 45  0
             throw new UnsupportedOperationException();
 46  
         }
 47  
 
 48  
     }
 49  
 }