Clover coverage report - PMD - 3.7
Coverage timestamp: Wed May 31 2006 09:25:59 EDT
file stats: LOC: 73   Methods: 8
NCLOC: 58   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
MethodScope.java 70% 87.5% 87.5% 83.3%
coverage coverage
 1    /**
 2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
 3    */
 4    package net.sourceforge.pmd.symboltable;
 5   
 6    import net.sourceforge.pmd.ast.ASTConstructorDeclaration;
 7    import net.sourceforge.pmd.ast.ASTName;
 8    import net.sourceforge.pmd.ast.SimpleNode;
 9    import net.sourceforge.pmd.util.Applier;
 10   
 11    import java.util.ArrayList;
 12    import java.util.HashMap;
 13    import java.util.List;
 14    import java.util.Map;
 15   
 16    public class MethodScope extends AbstractScope {
 17   
 18    protected Map variableNames = new HashMap();
 19    private SimpleNode node;
 20   
 21  1044 public MethodScope(SimpleNode node) {
 22  1044 this.node = node;
 23    }
 24   
 25  315 public MethodScope getEnclosingMethodScope() {
 26  315 return this;
 27    }
 28   
 29  109 public Map getVariableDeclarations() {
 30  109 VariableUsageFinderFunction f = new VariableUsageFinderFunction(variableNames);
 31  109 Applier.apply(f, variableNames.keySet().iterator());
 32  109 return f.getUsed();
 33    }
 34   
 35  186 public NameDeclaration addVariableNameOccurrence(NameOccurrence occurrence) {
 36  186 NameDeclaration decl = findVariableHere(occurrence);
 37  186 if (decl != null && !occurrence.isThisOrSuper()) {
 38  186 ((List) variableNames.get(decl)).add(occurrence);
 39  186 SimpleNode n = occurrence.getLocation();
 40  186 if (n instanceof ASTName) {
 41  185 ((ASTName) n).setNameDeclaration(decl);
 42    } // TODO what to do with PrimarySuffix case?
 43    }
 44  186 return decl;
 45    }
 46   
 47  314 public void addDeclaration(VariableNameDeclaration variableDecl) {
 48  314 if (variableNames.containsKey(variableDecl)) {
 49  0 throw new RuntimeException("Variable " + variableDecl + " is already in the symbol table");
 50    }
 51  314 variableNames.put(variableDecl, new ArrayList());
 52    }
 53   
 54  1195 public NameDeclaration findVariableHere(NameOccurrence occurrence) {
 55  1195 if (occurrence.isThisOrSuper() || occurrence.isMethodOrConstructorInvocation()) {
 56  317 return null;
 57    }
 58  878 ImageFinderFunction finder = new ImageFinderFunction(occurrence.getImage());
 59  878 Applier.apply(finder, variableNames.keySet().iterator());
 60  878 return finder.getDecl();
 61    }
 62   
 63  315 public String getName() {
 64  315 if (node instanceof ASTConstructorDeclaration) {
 65  0 return this.getEnclosingClassScope().getClassName();
 66    }
 67  315 return ((SimpleNode) node.jjtGetChild(1)).getImage();
 68    }
 69   
 70  0 public String toString() {
 71  0 return "MethodScope:" + glomNames(variableNames.keySet().iterator());
 72    }
 73    }