Clover coverage report - PMD - 3.3
Coverage timestamp: Thu Sep 15 2005 17:59:57 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  772 public MethodScope(SimpleNode node) {
 22  772 this.node = node;
 23    }
 24   
 25  217 public MethodScope getEnclosingMethodScope() {
 26  217 return this;
 27    }
 28   
 29  110 public Map getVariableDeclarations() {
 30  110 VariableUsageFinderFunction f = new VariableUsageFinderFunction(variableNames);
 31  110 Applier.apply(f, variableNames.keySet().iterator());
 32  110 return f.getUsed();
 33    }
 34   
 35  116 public NameDeclaration addVariableNameOccurrence(NameOccurrence occurrence) {
 36  116 NameDeclaration decl = findVariableHere(occurrence);
 37  116 if (decl != null && !occurrence.isThisOrSuper()) {
 38  116 ((List) variableNames.get(decl)).add(occurrence);
 39  116 SimpleNode n = occurrence.getLocation();
 40  116 if (n instanceof ASTName) {
 41  115 ((ASTName)n).setNameDeclaration(decl);
 42    } // TODO what to do with PrimarySuffix case?
 43    }
 44  116 return decl;
 45    }
 46   
 47  223 public void addDeclaration(VariableNameDeclaration variableDecl) {
 48  223 if (variableNames.containsKey(variableDecl)) {
 49  0 throw new RuntimeException("Variable " + variableDecl + " is already in the symbol table");
 50    }
 51  223 variableNames.put(variableDecl, new ArrayList());
 52    }
 53   
 54  808 public NameDeclaration findVariableHere(NameOccurrence occurrence) {
 55  808 if (occurrence.isThisOrSuper()) {
 56  51 return null;
 57    }
 58  757 ImageFinderFunction finder = new ImageFinderFunction(occurrence.getImage());
 59  757 Applier.apply(finder, variableNames.keySet().iterator());
 60  757 return finder.getDecl();
 61    }
 62   
 63  214 public String getName() {
 64  214 if (node instanceof ASTConstructorDeclaration) {
 65  0 return this.getEnclosingClassScope().getClassName();
 66    }
 67  214 return ((SimpleNode)node.jjtGetChild(1)).getImage();
 68    }
 69   
 70  0 public String toString() {
 71  0 return "MethodScope:" + glomNames(variableNames.keySet().iterator());
 72    }
 73    }